Use env variables as input alternative #104
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |