This repo allows building of images that are used in other apollographl repos for CI only.
To add a new image, the easiest method is to copy an existing folder at the top level of the repo. Then you can change its name and update the Dockerfile to allow it to build your new image. The automated CI checks should take care of everything else.
Each image directory must contain:
Dockerfileconfig.ymlwithdescriptionand aplatformslist of{ platform, runner }pairs describing the GitHub Actions runner used to build each platform.
The build/scan/release pipeline is shared between both workflows and lives in
.github/workflows/_image_pipeline.yml. It:
- Builds the image (multi-arch) via the
apollographql/release-toolingreusable workflow, which pushes to Apollo's internal GCP artifact registry. - Pulls the built image from the internal registry and scans it with Wiz CLI v1.
- Republishes the image to GHCR — either tagged with the next semver version (on push
to
main), or with a<current_version>-<UTC datetime>suffix (daily build).
There are two top-level workflows:
docker_publish.yml— runs on pull requests and on push tomain. Only the image directories with changed files in the triggering commit are built. PRs run build + scan only; merges tomainadditionally publish the next patch version to GHCR, push a git tag (<image-dir>/v<version>), and create a per-image GitHub Release. Images are tagged likeapollo-rust-builder:0.30.1.docker_publish_daily.yml— runs daily at 10:00 UTC and on manual dispatch. Rebuilds every image so that base-image security updates (microdnf upgrade,apk upgrade, etc.) flow through, and publishes each with a tag likeapollo-rust-builder:0.30.0-202504301034. No git tag and no GitHub Release.
The daily build at 10:00 UTC publishes every image as
<image-name>:<current-version>-<datetime>, e.g. apollo-rust-builder:0.30.0-202504301034.
If you need something more recent (for example, to pick up a base-image fix that landed
mid-day), trigger a manual run:
- Go to
Actions. - Run
Build & Publish Docker Images - Daily.
All images are built in parallel so kicking off the workflow doesn't delay the one you care about.
We recommend not pinning to a daily tag long-term — switch back to a versioned tag as soon as one is available.