Skip to content

chore: update GitHub Actions workflow for Docker build, improve permi… #100

chore: update GitHub Actions workflow for Docker build, improve permi…

chore: update GitHub Actions workflow for Docker build, improve permi… #100

Workflow file for this run

name: Create Tag and Release
on:
push:
branches:
- main
jobs:
release:
runs-on: ubuntu-latest
if: ${{ !contains(github.event.head_commit.message, 'no-release') }}
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Get latest tag
id: get_latest_tag
run: echo "latest_tag=$(git describe --tags --abbrev=0)" >> $GITHUB_OUTPUT
- name: Bump version and update package.json
id: tag_version
run: |
latest_tag=${{ steps.get_latest_tag.outputs.latest_tag }}
if [[ $latest_tag =~ ^v([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]; then
major=${BASH_REMATCH[1]}
minor=${BASH_REMATCH[2]}
patch=${BASH_REMATCH[3]}
new_tag="v$major.$minor.$((patch + 1))"
else
new_tag="v1.5.1"
fi
# Update package.json version (without the 'v' prefix)
new_version="${new_tag:1}"
npm version $new_version --no-git-tag-version
# Stage and commit package.json changes
git config user.name github-actions
git config user.email [email protected]
git add package.json package-lock.json
git commit -m "chore: bump version to ${new_tag}"
git push
# Create and push new tag
git tag $new_tag
git push origin $new_tag
echo "new_tag=$new_tag" >> $GITHUB_OUTPUT
- name: Generate Release Notes
id: release_notes
run: |
# Get commit messages since last tag
COMMITS=$(git log $(git describe --tags --abbrev=0)..HEAD --pretty=format:"- %s")
echo "commits<<EOF" >> $GITHUB_OUTPUT
echo "$COMMITS" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Create Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.tag_version.outputs.new_tag }}
release_name: Release ${{ steps.tag_version.outputs.new_tag }}
body: |
# What's Changed
${{ steps.release_notes.outputs.commits }}
**Full Changelog**: https://github.com/${{ github.repository }}/commits/${{ steps.tag_version.outputs.new_tag }}
draft: false
prerelease: false