This repository holds the Dockerfiles for images used in StackRox CI & builds.
Each image flavor (e.g. stackrox-test, scanner-test) is pushed to
quay.io/stackrox-io/apollo-ci with three types of tags:
| Tag | Example | Updated when | Use in |
|---|---|---|---|
| versioned | stackrox-test-0.5.7 |
Every merge to main (auto-tagged) | Release branch prow configs, pinned references |
| latest | stackrox-test-latest |
Every new version tag on main | Testing rox-ci-image version in openshift/release PRs with /pj-rehearse before promoting to stable. |
| stable | stackrox-test-stable |
Manual promotion via workflow | Master/nightly prow configs in openshift/release |
- Merge to main --
tag.yamlauto-creates a semver tag (e.g.0.5.8) - Tag push --
build.yamlbuilds all images, pushes versioned tags, and updateslatest(only if the tag is the highest version on main) - Promote to stable -- run manually when ready:
This does a server-side retag (no rebuild) of all image flavors from the specified version (default:
gh workflow run promote-stable.yaml # or with a specific version: gh workflow run promote-stable.yaml -f version=0.5.8latest) tostable.
Prow job configs in the openshift/release repository reference these images via
build_root.image_stream_tag. The tags must first be mirrored in
core-services/image-mirroring/_config.yaml.
- Master/nightly configs: use
stabletag -- periodically, automatically picks up promoted versions without config changes. - Release branch configs: pin to a specific version (e.g.
scanner-test-0.5.7) for reproducibility. latesttag: use only for testing PRs against openshift/release.latestis a moving target and should not be used for required jobs -- it is intended only for validation before promoting tostable.
To mirror a new versioned tag for release branch use:
- Add an entry to
core-services/image-mirroring/_config.yamlin openshift/release - PR requires testplatform team review
The latest and stable floating tags are mirrored once and do not need
updates per version.
Example: you need to bump a dependency or add a tool to the CI image.
- Make your change on a branch and open a PR in this repo.
- Merge to main -- once approved, merge the PR. The
tag.yamlworkflow auto-creates a semver tag (e.g.0.5.8). - Wait for the build -- the
build.yamlworkflow builds all image flavors and pushes both versioned andlatesttags to quay.io. - Test in openshift/release -- open a PR in
openshift/releasethat references thelatesttag and run/pj-rehearseto validate affected prow jobs. No config change is needed if the jobs already uselatest. - Promote to stable -- once rehearsals pass, run the promote-stable
workflow
(or
gh workflow run promote-stable.yaml). This retagslatest→stable. Master/nightly prow jobs pick up the new image automatically. - Pin release branches (if needed) -- for release branch configs, update
openshift/releaseto reference the specific versioned tag (e.g.stackrox-test-0.5.8). This requires testplatform review.
Note: There is only one
latesttag per flavor, so only one rox-ci-image change can be tested via rehearsal at a time. Coordinate with others if multiple changes are in flight.
To bump the Go version across all Docker images in this repository, use the automated script:
./scripts/bump_go_version.sh <target_version>./scripts/bump_go_version.sh 1.24.6- Validates the target Go version format
- Fetches the SHA256 checksum for
go<version>.linux-amd64.tar.gzfrom https://go.dev/dl/ - Automatically finds all Dockerfiles containing
GOLANG_VERSIONargument - Updates
GOLANG_VERSIONandGOLANG_SHA256in all found Dockerfiles - Creates a new branch named
bump-go-<version> - Commits the changes with a descriptive message
- Pushes the branch to origin
- Creates a pull request (requires GitHub CLI)
- Clean git working tree (no uncommitted changes)
- Push access to the repository
- GitHub CLI installed and authenticated