Repository navigation
Full cross-platform support: OS-matrix CI, goreleaser releases, multi-arch Docker - #9
Merged
Merged
Conversation
…rch Docker GTC is pure Go with CGO disabled, so it already compiles everywhere; this makes that a tested, released guarantee: - CI now runs the test suite on Linux, Windows, and macOS runners and cross-compiles all six release targets (linux/darwin/windows on amd64/arm64) on every PR, so a platform regression can't land. Format/vet/race checks stay on the Linux job. - goreleaser config + a tag-triggered release workflow: pushing a v* tag publishes archives for every OS/arch (zip on Windows, tar.gz elsewhere) with checksums and a generated changelog, binaries named gtc and stamped with the version. - The Dockerfile is now multi-arch aware (BUILDPLATFORM cross-compile via TARGETOS/TARGETARCH); the release workflow pushes a linux/amd64+arm64 image to ghcr.io/emoss08/gtc with semver and latest tags. - The binary reports its version: --version flag, startup log line, injected via -ldflags -X main.version. - README gains install options (releases, Docker, source) and a Windows PowerShell quick start; CLAUDE.md documents the cross-platform contract. Verified locally: all six GOOS/GOARCH targets build with CGO_ENABLED=0, goreleaser config passes `goreleaser check`, full test suite green, and --version prints the stamped version. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019dEj24Ta2o9QxzW9ZrSPtb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Makes GTC's cross-platform story a tested, released guarantee. The codebase is pure Go with
CGO_ENABLED=0, so it already compiles for every major platform — verified locally for all six targets (linux,darwin,windows×amd64,arm64). This PR adds the enforcement and distribution around that:CI (every PR)
-racechecks stay on the Linux job (where the race detector and shell syntax are reliable).Releases (push a
v*tag).goreleaser.yaml(validated withgoreleaser check) + a tag-triggered workflow publish GitHub release archives for every OS/arch —.zipon Windows,.tar.gzelsewhere — bundling README, LICENSE, and the example sink config, with checksums and a generated changelog. Released binary is namedgtc.linux/amd64+arm64) is pushed toghcr.io/emoss08/gtcwith semver andlatesttags, authenticated with the built-inGITHUB_TOKEN— no secrets to configure.Binary & docs
BUILDPLATFORM/TARGETOS/TARGETARCH, sodocker buildxworks for any target.--versionflag and a startup version log line, stamped at release time via-ldflags -X main.version(verified locally).Type of change
Checklist
go test ./...passes (including-race)gofmt/go vetare cleanGOOS/GOARCHtargets build locally withCGO_ENABLED=0;goreleaser checkpasses;--versionprints the stamped versionREADME.md/CLAUDE.mdupdatedNotes for the reviewer
go test ./...without-raceto keep them fast and toolchain-independent; the Linuxlintjob still runs the full race-enabled suite.git tag v0.1.0 && git push origin v0.1.0produces the binaries and the ghcr image. The ghcr package will be private by default on first push — flip it to public in the package settings if you want anonymousdocker pull.🤖 Generated with Claude Code
https://claude.ai/code/session_019dEj24Ta2o9QxzW9ZrSPtb
Generated by Claude Code