Repository navigation
Release through the shared Go release workflow - #47
Merged
Merged
Conversation
release.yml becomes a thin caller of simtabi/.github's go-release.yml on macos-latest (the darwin targets need cgo) under the release environment. A release builds on a pushed vX.Y.Z tag or on request, replacing the dispatch-only, confirm=release-go workflow; the shared workflow's notes check replaces the gh release edit step. The guards pin the triggers, the shared call, its inputs and the channels.
Binaries ship on the GitHub release only (owner, 2026-11-13). The homebrew_casks, scoops and winget blocks go. simtabi/homebrew-tap and simtabi/scoop-bucket hold no vigil entry.
README and installation offer the release download, checked against checksums.txt, then a build from source. docs/release.md gives both ways to release, and says the Release workflow stays disabled until the owner enables it.
A Windows checkout carries CRLF, so the exact-line match for the tag input failed there while passing on macOS and Linux.
imanimanyara
marked this pull request as ready for review
November 13, 2026 15:20
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Moves vigil's release onto simtabi/.github's shared Go release workflow, per the 2026-11-13 standard: binaries ship on the GitHub release only, and a release builds on a pushed version tag or on request.
uses:pinssimtabi/.github/.github/workflows/go-release.yml@941f7b7ecce5dc8af6daedfc7496dd4367c70877, the merge commit of simtabi/.github#28, which added theruns-onandenvironmentinputs vigil needs.release.ymlis a thin caller withruns-on: macos-latestandenvironment: release, as before. Its triggers arepush: tags(v[0-9]+.[0-9]+.[0-9]+,v[0-9]+.[0-9]+.[0-9]+-*) andworkflow_dispatchwith a requiredtag, with concurrency per tag, never cancelled.go-version-file: src/go.mod, syft,GOPRIVATE/GONOSUMDB, thesrc/vX.Y.Zalias, GoReleaser onsrc/.goreleaser.yaml, and attestation over.cache/goreleaser/checksums.txt. There are no extra assets and nopost-releasestep. Past release runs took about 7 minutes, so the shared 40-minute timeout (the old one was 60) leaves room.--release-notesfromsrc/scripts/extract-changelog.sh, thengh release edit --notes-file. The shared workflow passes--release-notes, then reads the published body back and fails the run if it is shorter than the section. Forv0.1.0(the only version tag on GitHub) the body text is the same section, with three differences: a leading blank line, a**Full changelog:**link appended, and, because 0.1.0 is the bottom section, the file's link-reference definitions (GitHub does not render those). One behaviour difference: if GoReleaser ever dropped the notes, the old step would have repaired the body. The shared workflow fails red instead, leaving the release with an empty body to fix by hand.Releaseworkflow stays disabled in Actions (disabled_manuallysince 2026-11-08), so after this merges neither a tag push nor a request runs anything until the owner runsgh workflow enable release.yml --repo simtabi/vigil. I did not change that setting.docs/release.mdnow says so, and corrects the stale reason: measured today,v0.1.0is the only version tag on GitHub, and itsrelease.ymlis dispatch-only behindconfirm=release-go.docs/installation.mdoffer the release download, then a build from source. They also say GitHub lists no vigil release yet:GET repos/simtabi/vigil/releasesreturned 0 today, although the old docs described 0.1.0 to 0.7.0 as published.docs/updating.mddrops the "on hold" banner.Removed
src/.goreleaser.yaml: thehomebrew_casks,scoopsandwingetblocks.simtabi/homebrew-tapandsimtabi/scoop-buckethold no vigil entry; the same probe foundCasks/osaat.rb, so it can see one.release.yml: theTAP_GITHUB_TOKEN,HOMEBREW_TAP_DEPLOY_KEYandSCOOP_BUCKET_DEPLOY_KEYenv, theSKIP_WINDOWS_PKGS/SKIP_SCOOPswitches, theconfirm=release-gorefusal step, and thegh release editnotes step. The repository secrets and variables themselves are untouched.TestReleaseRunsOnlyOnAConfirmedDispatch(and itsautomaticTriggerregexp) becameTestReleaseRunsOnAVersionTagOrOnRequest.TestReleaseMirrorsTheSrcTag, which read the inline alias script, becameTestReleaseInputsMatchTheRepository(alias on, this repo's config,go.modand changelog,runs-on: macos-latest,environment: release); its GoReleaserdist/dir/ldflags checks are kept.TestReleasesCarryTheirChangelogSectionkeeps itschangelog.disablecheck and now requires the shared call instead ofgh release edit. New:TestGoReleaserPublishesNowhereElseasserts the removed blocks, and every other banned block, are absent.Verification
go -C src test -count=1 ./...passes, exceptinternal/netcheck, whosehttptestserver cannot bind a port in the local sandbox (CI runs it).go -C src vet ./...andgofmt -l srcare clean;golangci-lint run ./...reports 0 issues;goreleaser check(2.20.1) validates.actionlint1.7.12 is clean onrelease.yml; its one warning is an existing SC2046 in the unchangedci.yml.go test -count=1, then restored:branches: [main], ascheduletrigger,uses:pointed elsewhere,runs-on: ubuntu-latest,environmentremoved,module-alias-prefix: '',changelog: NOTES.md, and abrews:block. Each failed its guard.