-
Notifications
You must be signed in to change notification settings - Fork 0
feat: add GoReleaser release pipeline #59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Replace manual matrix build with GoReleaser for cross-platform releases. Git tags become the version source of truth, injected via ldflags at build time. Includes version-bump workflow dispatch, PR validation in snapshot mode, and comprehensive release documentation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Greptile OverviewGreptile SummaryThis PR replaces the previous GitHub Actions matrix build/release flow with a GoReleaser-driven pipeline. It adds a tag-triggered On the CLI side, Two workflow correctness issues remain: the test workflow’s arm64 dist directory checks use inconsistent paths, and the version bump workflow’s tag parsing is brittle and can fail if tags aren’t strict numeric Confidence Score: 3/5
|
| Filename | Overview |
|---|---|
| .beads/issues.jsonl | Adds a new open beads issue entry; no functional impact on release pipeline. |
| .github/workflows/release.yml | Replaces matrix build/release with GoReleaser action triggered on v* tags; appears correct. |
| .github/workflows/test-release.yml | Adds PR workflow to run GoReleaser snapshot build; directory checks for arm64 builds use inconsistent dist paths (missing _v1 suffix). |
| .github/workflows/version-bump.yml | Adds manual workflow to create and push next version tag; parsing assumes strict numeric vMAJOR.MINOR.PATCH and can fail on malformed/prerelease tags. |
| .gitignore | Ignores GoReleaser dist/ output directory. |
| .goreleaser.yml | Introduces GoReleaser v2 config for cross-platform builds, archives, checksums, and GitHub changelog-based release notes. |
| CONTRIBUTING.md | Documents automated release process and version bump workflow usage. |
| Makefile | Adds ldflags-based version/commit/date injection for local builds. |
| cmd/floop/cmd_version.go | Extends version command to print and JSON-emit commit/date metadata. |
| cmd/floop/main.go | Defines version/commit/date variables intended for ldflags injection. |
| docs/RELEASE_PROCESS.md | Adds detailed release workflow documentation and troubleshooting guidance. |
Sequence Diagram
sequenceDiagram
participant Maintainer
participant GH as GitHub Actions
participant Git as Repo/Tags
participant GR as GoReleaser
participant Rel as GitHub Releases
Maintainer->>GH: workflow_dispatch (version-bump.yml: bump=patch|minor|major)
GH->>Git: checkout (fetch-depth:0)
GH->>Git: compute next version from latest v* tag
GH->>Git: create annotated tag vX.Y.Z
GH->>Git: push tag to origin
Git-->>GH: tag push event (release.yml on push tags v*)
GH->>Git: checkout (fetch-depth:0)
GH->>GR: goreleaser release --clean
GR->>GR: build 6 binaries + archives + checksums
GR->>Rel: publish release + upload artifacts
Rel-->>Maintainer: release available for download
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
11 files reviewed, 2 comments
Additional Comments (2)
In snapshot builds you already reference Also appears at
Consider validating the parsed parts (3 components, numeric) and/or stripping pre-release/build metadata before arithmetic. |
Summary
version=devwith commit SHA and timestampversion-bump.ymlworkflow dispatch for manual patch/minor/major version bumping that triggers release automaticallytest-release.ymlto validate GoReleaser config in snapshot mode on PRsChanges
.goreleaser.yml.github/workflows/release.yml.github/workflows/version-bump.yml.github/workflows/test-release.ymlcmd/floop/main.gocmd/floop/cmd_version.goMakefile.gitignoredist/directoryCONTRIBUTING.mddocs/RELEASE_PROCESS.mdValidated locally
goreleaser checkpassesgoreleaser build --snapshot --cleanbuilds all 6 binariesgoreleaser release --snapshot --clean --skip=publishproduces archives + checksumsfloop version dev (commit: 562a572, built: 2026-02-11T07:21:27Z)make build && ./floop versionworks with ldflagsTest plan
goreleaser checkpasses in CIgh workflow run version-bump.yml -f bump=patchand verify release createdfloop versionoutput🤖 Generated with Claude Code