Automate manifest.json version updates during release
Update `make release` to write the version into manifest.json and commit it before tagging, so the packaged artifact always carries the correct version. Also add a CI guard in the release workflow that fails early if the tag and manifest versions ever diverge. https://claude.ai/code/session_0158SxS2ATe6PL8zTpsoHRFn
This commit is contained in:
@@ -16,6 +16,15 @@ jobs:
|
|||||||
- name: Check out code
|
- name: Check out code
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v5
|
||||||
|
|
||||||
|
- name: Verify manifest version matches tag
|
||||||
|
run: |
|
||||||
|
TAG_VERSION="${GITHUB_REF_NAME#v}"
|
||||||
|
MANIFEST_VERSION=$(grep -oP '"version"\s*:\s*"\K[^"]+' manifest.json)
|
||||||
|
if [ "$TAG_VERSION" != "$MANIFEST_VERSION" ]; then
|
||||||
|
echo "::error::Tag version ($TAG_VERSION) does not match manifest.json version ($MANIFEST_VERSION)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@v5
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -19,6 +19,10 @@ release: test
|
|||||||
@if [[ ! "${V}" =~ ^[0-9]+\.[0-9]+\.[0-9]+.*$$ ]]; then echo "Usage: make release V=X.X.X"; exit 1; fi
|
@if [[ ! "${V}" =~ ^[0-9]+\.[0-9]+\.[0-9]+.*$$ ]]; then echo "Usage: make release V=X.X.X"; exit 1; fi
|
||||||
go mod tidy
|
go mod tidy
|
||||||
@if [ -n "`git status -s`" ]; then echo "\n\nThere are pending changes. Please commit or stash first"; exit 1; fi
|
@if [ -n "`git status -s`" ]; then echo "\n\nThere are pending changes. Please commit or stash first"; exit 1; fi
|
||||||
|
@# Update version in manifest.json
|
||||||
|
@sed -i 's/"version": *"[^"]*"/"version": "${V}"/' manifest.json
|
||||||
|
git add manifest.json
|
||||||
|
git commit -m "Release v${V}" --allow-empty --no-verify
|
||||||
git tag v${V}
|
git tag v${V}
|
||||||
git push origin v${V} --no-verify
|
git push origin main v${V} --no-verify
|
||||||
.PHONY: release
|
.PHONY: release
|
||||||
|
|||||||
Reference in New Issue
Block a user