Skip to content

Add automated semver + CI + binary release workflows#25

Merged
dolph merged 3 commits into
mainfrom
claude/setup-ci-workflows-jZuwG
May 16, 2026
Merged

Add automated semver + CI + binary release workflows#25
dolph merged 3 commits into
mainfrom
claude/setup-ci-workflows-jZuwG

Conversation

@dolph
Copy link
Copy Markdown
Owner

@dolph dolph commented May 16, 2026

Summary

Sets up automated semver + CI + binary release for this repo:

  • ci.yml runs go vet, go build, and go test -race on every PR and on every push to main.
  • release.yml chains off a successful CI run on main: it reads the merged PR's release:* label, computes the next semver tag, builds a static linux/amd64 binary (find-replace-linux-amd64), pushes the tag, and publishes a GitHub release with auto-generated notes.

go.yml is removed; its tag-triggered build/release flow is replaced by the PR-label-driven release.yml. codeql-analysis.yml and golangci-lint.yml are left alone.

Version-bump labels

Apply exactly one to a PR (default is release:patch if none set):

Label Bump When to use
release:major 1.4.7 → 2.0.0 Breaking change
release:minor 1.4.7 → 1.5.0 Backwards-compatible new behavior
release:patch 1.4.7 → 1.4.8 Bug fix, refactor, dep bump (default)
release:skip Docs-only / CI-only, no release

Precedence: skip > major > minor > patch. Direct pushes to main (no PR) fall back to release:patch.

Behavior changes vs. the old go.yml

  • Trigger. Releases used to fire on git push origin vX.Y.Z; they now fire automatically after a PR merge to main, based on the merge commit's PR label. The next tag is computed from the latest existing tag, so the first merge after this PR cuts a patch bump by default.
  • Asset name. The old workflow published find-replace (no arch suffix); the new workflow publishes find-replace-linux-amd64. Anything pulling the latest release asset will need its URL updated.
  • Release notes. Previously used README.md as the release body; now auto-generated from PR titles + commit messages since the previous tag (via gh release create --generate-notes --notes-start-tag).
  • Build path. CI runs go vet / go build ./... / go test -race ./... directly instead of invoking ./build.sh.

Test plan

  • After merge, the CI workflow runs on this PR and passes.
  • After merge, the release workflow fires on the post-merge push to main and cuts the next patch tag with find-replace-linux-amd64 attached.
  • A subsequent PR with release:minor cuts a minor bump.
  • A subsequent PR with release:skip produces no new tag.

dolph added 3 commits May 15, 2026 20:47
CI runs `go vet`, `go build`, `go test -race` on every PR and push to
main. A successful run on main triggers the release workflow, which
reads the merged PR's `release:*` label (default `patch`), computes the
next semver tag, builds a static linux/amd64 binary, pushes the tag,
and publishes a GitHub release with auto-generated notes.

Replaces the previous tag-triggered release in `go.yml` with a fully
automated PR-label-driven flow.
The tag-triggered build/release flow is replaced by the PR-label-driven
release.yml.
@dolph dolph changed the title Adopt pizzabot's automated semver + CI + binary release workflows Add automated semver + CI + binary release workflows May 16, 2026
@dolph dolph merged commit 96529a1 into main May 16, 2026
2 checks passed
@dolph dolph deleted the claude/setup-ci-workflows-jZuwG branch May 16, 2026 01:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant