Skip to content

ci(release): publish semantic releases after main CI - #47

Merged
olamide226 merged 2 commits into
mainfrom
ci/release-on-main
Aug 1, 2026
Merged

ci(release): publish semantic releases after main CI#47
olamide226 merged 2 commits into
mainfrom
ci/release-on-main

Conversation

@olamide226

Copy link
Copy Markdown
Owner

Summary

Automates stable releases after the existing CI workflow succeeds on main. The workflow calculates a SemVer tag from Conventional Commit messages, creates the tag at the tested commit, and runs GoReleaser in the same serialized job. The version calculator is tested in CI, release policy is documented, and release notes now use the cask installation command.

Spec task: tasks.md task 31 — Exercise the release pipeline before tagging.

Requirements covered

Requirement Acceptance criterion How this PR satisfies it
REQ-17.2 The product shall ship as a single self-contained binary, installable via Homebrew. A successful main CI run now creates the tag and invokes the existing GoReleaser macOS/universal-binary release pipeline automatically.
REQ-8.5 The Homebrew distribution shall declare Lima as a dependency. The GoReleaser release still updates the cask containing the Lima dependency; its release footer now uses the correct brew install --cask command.

Correctness properties

None.

Deliberately not covered

The existing failed v0.1.0 publication is not mutated by this PR. It requires a deliberate recovery decision because the public tag already exists. The new automation will release future merge commits only when their Conventional Commit type warrants a release.

Verification

  • make release-version-test
  • bash -n scripts/next-version.sh scripts/next-version_test.sh
  • Workflow YAML parsed locally
  • goreleaser check
  • make build
  • make lint
  • make tidy-check
  • make test
  • make e2e — not run: no Lima provider, mount, or shell-path changes.

Notes for review

feat: makes a minor release, fix: and perf: make a patch release, and a type!: subject or BREAKING CHANGE: footer makes a strict SemVer major release. docs:, test:, chore:, and ci: do not release. The job is intentionally CI-gated and creates the tag and GitHub/Homebrew release itself: tags pushed with GITHUB_TOKEN do not trigger a second workflow.

Move release triggering from manually pushed tags to a workflow that runs only\nafter the existing CI workflow succeeds on main. It calculates a stable SemVer\ntag from Conventional Commit messages, creates that tag at the commit CI tested,\nand invokes GoReleaser in the same job. This avoids relying on a tag-push\nworkflow that GITHUB_TOKEN would not trigger.\n\nThe calculator treats feat as minor, fix and perf as patch, and explicit\nbreaking changes as major. Its isolated Git-fixture test is part of CI so a\nfuture edit cannot silently alter release numbering. The serialized release job\nrefreshes tags and refuses to overwrite an existing one.\n\nRequirements: REQ-17.2, REQ-8.5
Point contributors at the automated-release policy, versioning rules, and Homebrew publishing details.\n\nRequirements: REQ-17.2, REQ-8.5
@olamide226
olamide226 merged commit 8a3bdca into main Aug 1, 2026
2 checks passed
@olamide226
olamide226 deleted the ci/release-on-main branch August 1, 2026 22:30
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