Files
buzz/.github/ci/minio/README.md
2026-10-07 18:02:27 -04:00

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.

  1. Merge the publisher-only PR containing .github/ci/minio/, .github/workflows/minio-image.yml, and the opt-in docker-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.
  2. 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.
  3. 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.