Set up or align a GitHub Actions release pipeline for a versioned package, library, CLI, or marketplace action. Use when standardizing repos around the verify-then-release shape: push to main → guardrails → semantic-release tags + publishes → version-bump commit back to main with [skip ci].
99
100%
Does it follow best practices?
Impact
98%
1.55xAverage score across 4 eval scenarios
Passed
No known issues
Redwood Systems ships vaultctl, a Go command-line tool for secrets rotation used by their infrastructure teams. The project has grown from an internal tool to one adopted by a handful of partner companies, and the team wants to provide polished distribution: pre-built binaries for Linux/macOS/Windows, a Homebrew formula so Mac users can simply brew install, and signed build attestation for supply-chain compliance.
Currently releases are manually created by whoever remembers to cut one — no consistency in changelog, no binary builds, and the Homebrew formula in the separate tap repository under the redwood-systems GitHub organization is months out of date. The team wants the release process fully automated: commits following conventional commits on main should automatically determine the version, create a GitHub Release, build cross-platform binaries, and update the Homebrew tap formula. No human should need to run anything.
The cross-repo Homebrew update needs its own authentication token since the default GitHub token only covers the source repo. The team is also conscious of supply-chain security and wants build provenance attestation for the release artifacts.
Produce the following files:
.github/workflows/ci.yml — complete GitHub Actions workflow with verify and release jobs.releaserc.json — semantic-release configuration.goreleaser.yaml — GoReleaser configuration including Homebrew tap automationInclude a brief SETUP.md at the repo root documenting which secrets need to be configured in repo settings and what permissions the TAP_GITHUB_TOKEN requires.
The following files represent the current repository state. Extract them before beginning.
=============== FILE: go.mod =============== module github.com/redwood-systems/vaultctl
go 1.22 =============== END FILE ===============
=============== FILE: Makefile =============== .PHONY: verify build
verify: go vet ./... go test ./... golangci-lint run
build: go build -o bin/vaultctl ./cmd/vaultctl =============== END FILE ===============