2.8 KiB
Buzz CI MinIO
ghcr.io/block/buzz-minio:latest contains MinIO and mc for the disposable
Linux AMD64 runners. Only the publisher smoke test selects it through
docker-compose.ci.yml. Ordinary CI inherits the Silo pins from
docker-compose.yml; the Helm install test inherits the chart defaults.
The MinIO image workflow builds only when its inputs change, or on a manual
dispatch. Pull requests build and smoke-test without publishing. On main, a
successful smoke test publishes the same image as
sha-<full commit>-run-<run id>-<attempt> and latest. The run-specific tag
preserves each build, including package refreshes from the same source commit.
Once consumers adopt the override, ordinary CI only pulls it; there is no build
fallback or dependency on the publisher. latest deliberately floats, and
Compose always pulls it. Docker's pull output records the resolved digest.
The Dockerfile pins upstream MinIO releases independently of the Silo images
used by the development and deployment examples. It uses checksummed official
GitHub release binaries and a digest-pinned Alpine base. MinIO and mc are
AGPL-3.0; their corresponding source is available at
the MinIO release
and mc release.
First publication
The image must exist and be publicly pullable before the CI switch can pass. Use two separate PRs: Buzz only permits squash merges, so two commits in one PR cannot stage this rollout.
- Merge the publisher-only PR containing
.github/ci/minio/,.github/workflows/minio-image.yml, and the opt-indocker-compose.ci.yml. Ordinary CI does not select the override yet, so it does not need this image to validate the publisher PR. The merge triggers the first publication. - After publication succeeds, an org/package admin must make buzz-minio
public in its GitHub package settings (new GHCR packages default to private,
even for public repositories). Verify an anonymous pull of
ghcr.io/block/buzz-minio:latest. - Rebase the separate consumer PR onto
main, run its integration checks, and merge it. That PR selects the override in relay and mesh lifecycle CI.
Subsequent publications preserve package visibility.
Updating or rebuilding
Update the release URLs/checksums or base digest in the Dockerfile and open a
PR. Merging triggers publication. To rebuild the existing recipe (for example,
to pick up Alpine package updates), dispatch MinIO image from main.
Manual dispatch disables Docker's layer cache so the package installation
runs again. Other refs can build and test but cannot publish latest.
To reproduce a CI run with a recorded version, set MINIO_CI_IMAGE to
the published run-specific tag or digest while using
COMPOSE_FILE=docker-compose.yml:docker-compose.ci.yml.