rony-chat-bot/.github/workflows/release.yml
2026-07-30 21:57:51 -07:00

73 lines
1.9 KiB
YAML

name: Release
on:
push:
branches:
- main
paths-ignore:
- '.github/workflows/**'
permissions:
contents: write
concurrency:
group: release
cancel-in-progress: false
jobs:
release:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Bump version and push tag
id: bump
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -euo pipefail
git fetch --tags --force
if git describe --tags --exact-match HEAD >/dev/null 2>&1; then
echo "HEAD is already tagged, skipping bump"
exit 0
fi
latest=$(git tag --sort=-v:refname --list 'v*.*.*-alpha' | head -n 1)
if [ -z "$latest" ]; then
echo "::error::No tag matching vX.Y.Z-alpha pattern found"
exit 1
fi
echo "Latest tag: $latest"
version="${latest#v}"
version="${version%-alpha}"
IFS='.' read -r major minor patch <<< "$version"
new_version="${major}.${minor}.$((patch + 1))-alpha"
new_tag="v${new_version}"
if git rev-parse "$new_tag" >/dev/null 2>&1; then
echo "::error::Tag $new_tag already exists"
exit 1
fi
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git tag -a "$new_tag" -m "Release $new_tag"
git push origin "$new_tag"
echo "tag=$new_tag" >> "$GITHUB_OUTPUT"
- name: Create GitHub release
if: steps.bump.outputs.tag
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.bump.outputs.tag }}
name: ${{ steps.bump.outputs.tag }}
prerelease: true
generate_release_notes: true