Skip to content

Add the shared Go release workflow - #27

Merged
imanimanyara merged 1 commit into
mainfrom
feat/go-release-workflow
Nov 13, 2026
Merged

imanimanyara merged 1 commit into
mainfrom
feat/go-release-workflow

Conversation

@imanimanyara

Copy link
Copy Markdown
Member

Summary

The one release pipeline for every Go project in every Simtabi-owned org (owner, 2026-11-13: GitHub-based binaries only, built on a tag or on request, kept somewhere reusable and shareable). This repository is public, so callers in ichava, sangehq, laranail and simtabi can all use it.

  • .github/workflows/go-release.yml (workflow_call only): checks the tag is vX.Y.Z[-pre] and on GitHub; checks out the tag; refuses a GoReleaser config holding any other channel (brews, homebrew_casks, scoops, winget, chocolateys, aurs, aur_sources, snapcrafts, flatpaks, nix, dockers, dockers_v2, docker_manifests, docker_signs, kos, krews, npms, cloudsmiths, furies, publishers, blobs, uploads, artifactories); takes the release notes from the tag's CHANGELOG section (fails closed); mirrors the src/vX.Y.Z module alias tag; runs GoReleaser; reads the published notes back; runs an optional caller post-release command for extra assets; attests provenance for checksums.txt and any extra checksums. GOPRIVATE keeps the build off the public Go proxy.
  • templates/go/release.yml: the caller every Go repo copies. Triggers are a pushed version tag, or workflow_dispatch with a tag input; one run per tag, never cancelled.
  • go-release/tests/ (stdlib only, run by CI): the workflow is only callable, the tag is required, the channel list is exactly the full list, and the template triggers only on a version tag or a dispatch naming one. Each of three planted defects (a branch push, a missing channel, a push trigger on the shared workflow) turns it red.
  • go-release/README.md, linked from the README.

Verification

  • python3 -m unittest discover -s go-release/tests -v: 7 passed.
  • actionlint 1.7.12 (checksum-verified): clean on go-release.yml, ci.yml and the template.

One reusable pipeline for every Go project: build the binaries and
publish them on the GitHub release only, on a version tag or on
request. It refuses a GoReleaser config that publishes anywhere else,
takes the notes from the CHANGELOG, mirrors the src/ module tag and
attests provenance. A caller template and stdlib tests come with it.
Copilot AI balanced review requested due to automatic review settings November 13, 2026 14:15

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

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.

2 participants