- GitHub repo Settings > Actions > General > Workflow permissions > Read and write permissions
- Add repository secret
NPM_TOKENto publish@ashvinctrl/provnto npm - Optional: create
ashvinctrl/homebrew-tapand add repository secretTAP_GITHUB_TOKEN
Secret names cannot start with GITHUB_ — GitHub reserves that prefix and
rejects the name. Both jobs are gated on their secret being non-empty and skip
silently green when it is missing, so a typo in a secret name looks like a
successful release that published nothing. Check the job actually ran.
- Bump versions in
provn-cli/Cargo.tomlandnpm/package.json— they must match the tag, or the release fails the version check - Run:
cd provn-cli && cargo testcd provn-cli && cargo clippy --all-targets -- -D warningscd provn-cli && cargo fmt --all --check
- Update
CHANGELOG.md - Commit changes
- Tag and push:
git tag -a vX.Y.Z -m "Provn vX.Y.Z"git push origin maingit push origin vX.Y.Z
- After the release completes, move the major-version alias so
uses: ashvinctrl/Provn@v1picks up the new release:git tag -f v1 vX.Y.Z && git push -f origin v1
release.yml runs on a v* tag and chains four jobs:
build— compiles binaries for 5 targets (Linux x86_64/aarch64, macOS x86_64/aarch64, Windows x86_64) and publishes a.sha256beside each archiverelease— creates the GitHub Release with all archives attachedhomebrew— callsupdate-homebrew.ymlto rewrite the tap formulapublish-npm— publishes@ashvinctrl/provn
homebrew is a needs: release job rather than a workflow listening for
release: [published]. That event is raised by the built-in GITHUB_TOKEN, and
GitHub does not start workflows from GITHUB_TOKEN-raised events — as a
listener it had zero runs across the project's history. update-homebrew.yml
also accepts workflow_dispatch with a tag, for re-running it by hand.