Skip to content

Use env variables as input alternative #104

Use env variables as input alternative

Use env variables as input alternative #104

Workflow file for this run

name: Create and publish release
on:
pull_request:
types: [opened, synchronize, reopened, labeled, unlabeled, closed]
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
determine-create-tag:
runs-on: ubuntu-latest
outputs:
tag: ${{ steps.bump-semver.outputs.new_version }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Get PR labels
id: pr-labels
uses: joerick/[email protected]
- name: Get semver parameters
id: get-semver-params
env:
GH_TOKEN: ${{ github.token }}
run: |
level=""
current_latest_tag_full="v0.0.0"
all_labels=(${{ steps.pr-labels.outputs.labels }})
if [[ ${all_labels[*]} =~ "release-patch" ]]
then
level="patch"
elif [[ ${all_labels[*]} =~ "release-minor" ]]
then
level="minor"
elif [[ ${all_labels[*]} =~ "release-major" ]]
then
level="major"
fi
if [[ ! -z "${level}" ]]
then
latest_release=$(gh release ls --json tagName,isLatest --jq ".[] | select(.isLatest == true)")
if [[ ! -z "${latest_release}" ]]
then
current_latest_tag_full=$(echo $latest_release | jq -r .tagName)
fi
fi
# Set outputs
echo "Bump level is $level"
echo "Current latest tag is $current_latest_tag_full"
echo "current_latest_tag_full=$current_latest_tag_full" >> "$GITHUB_OUTPUT"
echo "level=$level" >> "$GITHUB_OUTPUT"
- uses: actions-ecosystem/action-bump-semver@v1
if: ${{ steps.get-semver-params.outputs.level != '' }}
id: bump-semver
with:
current_version: ${{ steps.get-semver-params.outputs.current_latest_tag_full }}
level: ${{ steps.get-semver-params.outputs.level }}
- name: Create tag
if: ${{ github.event.pull_request.merged == true && steps.bump-semver.outputs.new_version != '' }}
run: |
IFS='.' read -ra tag_parts <<< ${{ steps.bump-semver.outputs.new_version }}
tag_major=${tag_parts[0]}
tag_major_minor=${tag_parts[0]}.${tag_parts[1]}
git tag ${{ steps.bump-semver.outputs.new_version }}
git push origin ${{ steps.bump-semver.outputs.new_version }}
git tag -f $tag_major
git push origin -f $tag_major
git tag -f $tag_major_minor
git push origin -f $tag_major_minor
- name: Print summary
if: ${{ steps.bump-semver.outputs.new_version != ''}}
run: |
echo '### New version 🚀' >> $GITHUB_STEP_SUMMARY
echo 'When merging, version ${{ steps.bump-semver.outputs.new_version }} will be created' >> $GITHUB_STEP_SUMMARY
create-release:
runs-on: ubuntu-latest
needs: [determine-create-tag]
if: ${{ github.event.pull_request.merged == true && needs.determine-create-tag.outputs.tag != '' }}
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Create release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ needs.determine-create-tag.outputs.tag }}
name: ${{ github.event.pull_request.title }}
body: ${{ github.event.pull_request.body }}
- name: Repository Dispatch
uses: peter-evans/repository-dispatch@v3
with:
event-type: publish_image