Skip to content

Release pipeline: goreleaser binaries and multi-arch ghcr image - #33

Merged
xobotyi merged 2 commits into
mainfrom
feat/release-pipeline
Jul 10, 2026
Merged

Release pipeline: goreleaser binaries and multi-arch ghcr image#33
xobotyi merged 2 commits into
mainfrom
feat/release-pipeline

Conversation

@xobotyi

@xobotyi xobotyi commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator

Adds the release pipeline (frame Phase 5).

  • .goreleaser.yaml: linux/darwin/windows binaries for amd64+arm64 on tag push, version stamped into main.version via ldflags; multi-arch Docker image published to ghcr.io/gaijinentertainment/go-gerrit-mcp via dockers_v2 (the legacy dockers key is deprecated).
  • Dockerfile: distroless/static (CA certificates for HTTPS to Gerrit, non-root), binary injected per platform by goreleaser.
  • release.yml: tag-push workflow — qemu + buildx + ghcr login + goreleaser.
  • CI gains a release-dry-run job: full snapshot on every push plus an image smoke test — the container must exit non-zero and name the missing env vars when started without configuration.

Validated locally: goreleaser check clean, release --snapshot --clean produced all six platform archives and both images, and the amd64 image exits 1 naming GERRIT_URL/GERRIT_USERNAME/GERRIT_TOKEN.

Closes #21

xobotyi added 2 commits July 10, 2026 22:39
goreleaser builds linux/darwin/windows binaries for amd64 and arm64 on
tag push and publishes a multi-arch Docker image to ghcr.io via
dockers_v2 (the dockers key is being phased out). The image bases on
distroless/static for CA certificates (HTTPS to Gerrit) and a non-root
user; the version stamps into main.version through ldflags.

To verify locally: goreleaser release --snapshot --clean, then run the
resulting image without env -- it must exit non-zero naming the
missing variables.

Refs: #21
Every push builds a full goreleaser snapshot -- all platform binaries
plus the Docker images -- so release configuration breakage surfaces
in review, not on tag day. The smoke test runs the amd64 image without
env and requires a non-zero exit naming the missing variable, pinning
the container's cold-start failure mode.

Refs: #21
@xobotyi
xobotyi merged commit ecbc07b into main Jul 10, 2026
5 checks passed
@xobotyi
xobotyi deleted the feat/release-pipeline branch July 10, 2026 20:44
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.

Add release pipeline

1 participant