Files
setup-copilot/.github/workflows/release.yml
Devraj Mehta bf52dcb0f1 Fix: fetch new tag before updating major version tag
gh release create creates the tag on the remote, so we need to fetch
it before we can reference it locally for the major version tag update.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-10 22:00:28 -04:00

74 lines
2.0 KiB
YAML

name: Release
on:
workflow_dispatch:
inputs:
bump:
description: Version bump type
required: true
default: patch
type: choice
options:
- patch
- minor
- major
jobs:
release:
runs-on: ubuntu-slim
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Determine new version
id: version
run: |
# Get the latest semver tag
LATEST_TAG=$(git tag --list 'v[0-9]*.[0-9]*.[0-9]*' --sort=-v:refname | head -n1)
if [ -z "$LATEST_TAG" ]; then
echo "No existing version tag found"
exit 1
fi
# Strip leading 'v' and split into components
VERSION="${LATEST_TAG#v}"
IFS='.' read -r MAJOR MINOR PATCH <<< "$VERSION"
case "${{ inputs.bump }}" in
major)
MAJOR=$((MAJOR + 1))
MINOR=0
PATCH=0
;;
minor)
MINOR=$((MINOR + 1))
PATCH=0
;;
patch)
PATCH=$((PATCH + 1))
;;
esac
NEW_VERSION="v${MAJOR}.${MINOR}.${PATCH}"
echo "previous=$LATEST_TAG" >> "$GITHUB_OUTPUT"
echo "new=$NEW_VERSION" >> "$GITHUB_OUTPUT"
echo "major=v${MAJOR}" >> "$GITHUB_OUTPUT"
echo "Bumping $LATEST_TAG -> $NEW_VERSION"
- name: Create GitHub release
run: |
gh release create "${{ steps.version.outputs.new }}" \
--generate-notes \
--notes-start-tag "${{ steps.version.outputs.previous }}"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Update major version tag
run: |
git fetch origin tag "${{ steps.version.outputs.new }}"
git tag -f "${{ steps.version.outputs.major }}" "${{ steps.version.outputs.new }}"
git push -f origin "${{ steps.version.outputs.major }}"