Skip to content

ci: publish docker image on release#51

Merged
pmady merged 2 commits into
pmady:mainfrom
jasonp2323:ci/publish-docker-image-on-release
Jul 5, 2026
Merged

ci: publish docker image on release#51
pmady merged 2 commits into
pmady:mainfrom
jasonp2323:ci/publish-docker-image-on-release

Conversation

@jasonp2323

Copy link
Copy Markdown
Contributor

What type of PR is this?

  • Bug fix
  • New feature
  • Documentation
  • Refactoring
  • CI/Build

Description

Adds multi-architecture Docker image publishing to the release workflow and
documents container usage in the README. Also fixes a stale Go version pin
that has broken the release workflow since the go 1.25 bump.

CI (.github/workflows/release.yml):

  • Added docker/setup-qemu-action@v3 and docker/setup-buildx-action@v3 steps to the existing docker job
  • Added platforms: linux/amd64,linux/arm64 to the docker/build-push-action step, so releases now publish multi-arch images to ghcr.io/pmady/gpu-mcp-server (arm64 covers Grace Hopper / GH200 GPU servers)
  • Images remain tagged with both the release version (e.g. v0.1.0) and latest
  • Fixed the release job's setup-go step, which pinned go-version: "1.23" while go.mod requires go >= 1.25 — with GOTOOLCHAIN=local this fails the test step, so any release tag pushed today would fail before building anything. Now uses go-version-file: go.mod so it can't drift again. (Found by rehearsing the release on my fork.)

Docs (README.md):

  • New "Docker" section with docker pull / docker run examples, the NVIDIA Container Toolkit requirement for --gpus all, a note that -i is required since the server speaks MCP over stdio, and an MCP client config snippet that launches the server via docker run

Testing — full release rehearsal on my fork:

  • Pushed a test tag; the release workflow ran end-to-end (binary release + docker job) and published to my fork's GHCR
  • Verified via docker buildx imagetools inspect that the manifest list contains both linux/amd64 and linux/arm64
  • Verified both image variants boot: --version on the amd64 image natively and on the arm64 image under QEMU emulation
  • Not yet exercised: NVML initialization on physical GPUs (--gpus all). I'm following up with a proposal for reusable GPU test infrastructure that will validate released images on real T4 (amd64) and T4G (arm64) hardware.
  • Pushed a test tag; the release workflow ran end-to-end (binary release + docker job)
    and published to my fork's GHCR:
    successful run
    published package

Related Issue

Fixes #27

Checklist

  • Tests added/updated (CI/docs change — no testable Go surface)
  • Documentation updated (if applicable)
  • make test passes
  • make lint passes
  • Commits are signed off (git commit -s)

AI Assistance Disclosure

Per AI_GUIDELINES.md: the release.yml was modified with the help of AI
(Claude Code). I reviewed the changes, performed make and lint tests
and validated the release workflow by merging and tagging onto my own fork.
Commits are DCO signed-off.

Contributor Info

  • Name: Jason Paquette
  • Location: Boston, MA
  • Company / Affiliation:

Signed-off-by: jasonp2323 <jpaquette2323@gmail.com>
Signed-off-by: jasonp2323 <jpaquette2323@gmail.com>
@jasonp2323 jasonp2323 changed the title Ci/publish docker image on release ci: publish docker image on release Jul 4, 2026
@pmady pmady merged commit 95caccb into pmady:main Jul 5, 2026
5 checks passed
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.

ci: publish Docker image to GHCR on release

2 participants