You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Each image flavor (e.g. `stackrox-test`, `scanner-test`) is pushed to
13
+
`quay.io/stackrox-io/apollo-ci` with three types of tags:
14
+
15
+
| Tag | Example | Updated when | Use in |
16
+
|-----|---------|-------------|--------|
17
+
|**versioned**|`stackrox-test-0.5.7`| Every merge to main (auto-tagged) | Release branch prow configs, pinned references |
18
+
|**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. |
19
+
|**stable**|`stackrox-test-stable`| Manual promotion via workflow | Master/nightly prow configs in openshift/release |
20
+
21
+
### How it works
22
+
23
+
1.**Merge to main** -- `tag.yaml` auto-creates a semver tag (e.g. `0.5.8`)
24
+
2.**Tag push** -- `build.yaml` builds all images, pushes versioned tags, and
25
+
updates `latest` (only if the tag is the highest version on main)
26
+
3.**Promote to stable** -- [run manually](https://github.com/stackrox/rox-ci-image/actions/workflows/promote-stable.yaml) when ready:
27
+
```bash
28
+
gh workflow run promote-stable.yaml
29
+
# or with a specific version:
30
+
gh workflow run promote-stable.yaml -f version=0.5.8
31
+
```
32
+
This does a server-side retag (no rebuild) of all image flavors from the
33
+
specified version (default: `latest`) to `stable`.
34
+
35
+
### Updating prow jobs in openshift/release
36
+
37
+
Prow [job configs](https://github.com/openshift/release/tree/main/ci-operator/config/stackrox/stackrox) in the `openshift/release` repository reference these images via
38
+
`build_root.image_stream_tag`. The tags must first be mirrored in
39
+
`core-services/image-mirroring/_config.yaml`.
40
+
41
+
-**Master/nightly configs**: use `stable` tag -- periodically, automatically picks up
42
+
promoted versions without config changes.
43
+
-**Release branch configs**: pin to a specific version (e.g. `scanner-test-0.5.7`)
44
+
for reproducibility.
45
+
-**`latest` tag**: use only for testing PRs against openshift/release.
46
+
`latest` is a moving target and should not be used for required jobs --
47
+
it is intended only for validation before promoting to `stable`.
48
+
49
+
### Mirroring new versions to openshift CI
50
+
51
+
To mirror a new versioned tag for release branch use:
52
+
53
+
1. Add an entry to `core-services/image-mirroring/_config.yaml` in openshift/release
54
+
2. PR requires testplatform team review
55
+
56
+
The `latest` and `stable` floating tags are mirrored once and do not need
57
+
updates per version.
58
+
59
+
## Step-by-step: Making a CI Image Change
60
+
61
+
Example: you need to bump a dependency or add a tool to the CI image.
62
+
63
+
1.**Make your change** on a branch and open a PR in this repo.
64
+
2.**Merge to main** -- once approved, merge the PR. The `tag.yaml` workflow
65
+
auto-creates a semver tag (e.g. `0.5.8`).
66
+
3.**Wait for the build** -- the `build.yaml` workflow builds all image flavors
67
+
and pushes both versioned and `latest` tags to quay.io.
68
+
4.**Test in openshift/release** -- open a PR in `openshift/release` that
69
+
references the `latest` tag and run `/pj-rehearse` to validate affected
70
+
prow jobs. No config change is needed if the jobs already use `latest`.
71
+
5.**Promote to stable** -- once rehearsals pass, [run the promote-stable
0 commit comments