feat: publish multi-platform container images - #6
Merged
Conversation
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.
Summary
Adds user-agnostic Bookworm, slim, and Alpine Kit container images. Each release publishes native
linux/amd64andlinux/arm64manifests toghcr.io/speakeasy-api/kit, with slim as the default flavor.Motivation
Kit currently ships binaries and package-manager integrations, but no supported container base for downstream agent environments. Publishing minimal Kit images provides a consistent foundation without coupling Kit to project-specific tools, language runtimes, or Git.
Impact
Customers can run Kit directly from GHCR or extend a documented base image for their own environments. All flavors run as the non-root
kituser with UID/GID1000, so bind-mounted workspaces must be writable by that identity.The change affects the release pipeline after GitHub release publication. It does not change existing Kit command behavior or binary distribution.
Technical details
Image flavors
slimuses Debian Bookworm Slim with glibc and is the default image.bookwormuses the full Debian Bookworm runtime with glibc.alpineuses Alpine 3.23 and a separately compiled musl binary.Multi-platform publication
Release jobs build
linux/amd64andlinux/arm64images on native GitHub-hosted runners. Each architecture is pushed by digest, then combined into a public multi-platform manifest without architecture-specific public tags.Tag behavior
Every release publishes versioned flavor tags:
v<version>andv<version>-slimv<version>-bookwormv<version>-alpineOnly the newest stable release updates
latest,slim,bookworm, andalpine. Prereleases and reruns of older stable releases do not move floating tags.Runtime contract
All flavors run from
/workspaceaskit, UID/GID1000. The images expose port8081for remote ACP usage and useSIGTERMas the stop signal. OCI metadata records the Kit version and source revision.GHCR visibility
The workflow authenticates with
GITHUB_TOKENandpackages: write; no additional registry secret is required. GitHub may create the package as private on its first push, so the workflow verifies public visibility and reports the package settings URL if an organization administrator must make the one-time change.