Publish the stella-serve container image on every release - #6485
Merged
Conversation
Nothing published packaging/docker/Dockerfile.serve: docker-serve.yml builds and smokes it on a pull request and discards it, and release.yml ships the CLI binary alone. A host that runs the engine as a container had to build the image from a checkout and learn at deploy time whether it matched the wire its client was written against. docker-serve-publish.yml builds the image natively for linux/amd64 and linux/arm64 on a release tag, smokes each with scripts/smoke-serve-image.sh before pushing its digest, and tags both digests together as ghcr.io/macanderson/stella-serve:<version> and :latest. The digests travel as artifacts rather than matrix job outputs, which two legs overwrite.
Contributor
There was a problem hiding this comment.
Sorry @macanderson, you've used your own review budget of 250,000 diff characters for the last 7 days.
You can request another review in 3 days and 16 hours by commenting @sourcery-ai review. Upgrade to get a review now.
Contributor
Reviewer's GuideThe PR adds a pinned, release-driven GitHub Actions workflow that natively builds and smoke-tests the serve image for amd64 and arm64, publishes architecture digests to GHCR, and atomically creates version/latest multi-architecture tags; release documentation explains how to consume the image. Sequence diagram for atomic multi-architecture image taggingsequenceDiagram
participant Tag as Release tag
participant CI as GitHub Actions
participant AMD64 as amd64 runner
participant ARM64 as arm64 runner
participant GHCR as GHCR
Tag->>CI: Trigger publish workflow
par Build amd64
CI->>AMD64: Build Dockerfile.serve
AMD64->>AMD64: smoke-serve-image.sh
AMD64->>GHCR: Push amd64 image by digest
AMD64-->>CI: Upload amd64 digest artifact
and Build arm64
CI->>ARM64: Build Dockerfile.serve
ARM64->>ARM64: smoke-serve-image.sh
ARM64->>GHCR: Push arm64 image by digest
ARM64-->>CI: Upload arm64 digest artifact
end
CI->>CI: Download both digest artifacts
CI->>GHCR: imagetools create version and latest tags over both digests
CI->>GHCR: imagetools inspect version tag
File-Level Changes
Possibly linked issues
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
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 this does
Publishes
packaging/docker/Dockerfile.serveon every release tag asghcr.io/macanderson/stella-serve:<version>and:latest, for linux/amd64 and linux/arm64.Nothing published the image before. The existing
docker-serve.ymlbuilds and smokes it on a pull request and throws it away, andrelease.ymlships only the CLI binary. Oxagen's node runs the engine as a container on arm64 and had no image to pin.How
docker-serve.ymluses before its digest is pushed.RELEASING.mdgains a short section on the image.Evidence
Toolchain-free guards pass locally (
make guards-fast, includingaction-pinsover the four new pinned actions), andmake proseandmake line-citationspass on the release doc change. The workflow itself runs only on a tag push, so its first real run is the next release after this merges. No test was deleted.No witness test: this is a CI change with no code path in the workspace.
Summary by Sourcery
Publish validated multi-architecture stella-serve container images alongside every release.
New Features:
Enhancements:
CI:
Documentation: