Commit 7dee37e
authored
SEP-1212: Split release CI into prep + rc1 steps for pre-RC1 internal QA day (#760)
## Summary
Split the `Release` GitHub Actions workflow into two dispatches so the
GAS team can validate a SHA-tagged internal-registry image during a
1-day internal QA window before `rc1` publishes to Docker Hub.
- **New `release_type: prep`** (Day 27) — `cmd_prep` + `make
release-prep` create `release/vX.Y.Z` from main HEAD, fire the rule #16
Jira version-create webhook, open the `main → vX.Y+1.0.dev0` dev-bump
PR, build the wheel, and trigger Jenkins with `pushImageDocker=false`
(SHA-tagged internal-registry image only). No version bump, no tag.
- **`cmd_rc(RC=1)` made idempotent against a prior prep** — probes
`origin` for the existing release branch and switches into an after-prep
path: syncs non-destructively to `origin/{branch}` (refuses to reset
when local is ahead), re-fires the rule #16 webhook (rule is naturally
idempotent), and gates the dev-bump PR call on `origin/main`'s actual
`pyproject.toml` version. The fresh-from-main path is bit-for-bit
unchanged (AC #6).
- **`make trigger-jenkins` parameterised** with `PUSH_IMAGE_DOCKER`
(default `true`). Deviation from the AC's literal wording
(`trigger-jenkins-internal SHA=<sha>` or `MODE=internal`): chose this
variable-on-existing-target approach as a finer-grained third path.
Pre-approved in the implementation plan.
- **Workflow YAML** adds `prep` to the choices, validates `rc_number`
must be empty for prep, and dispatches to `make release-prep`.
- 22 new unit tests cover `cmd_prep` happy path + preconditions +
ordering + head-sha → Jenkins, `cmd_rc` after-prep idempotency (webhook
re-fire, dev-bump skip-when-main-bumped, error-when-PR-unmerged,
non-destructive sync, refuse-when-local-ahead,
abort-on-rev-list-failure, still-bumps-and-tags),
`_remote_branch_exists` exit-code switch (0 / 2 / 128), and `prep`
argparse plumbing.
The workflow doc (release-process.md) is documented separately and
synced to Notion — the file is gitignored locally and does not ship in
this PR.
## Tested
- [ ] N/A — pure CI tooling. Tested via `pytest
tests/scripts/test_release.py -v` (57 tests pass), `make -n release-prep
VERSION=0.99.0`, `make -n trigger-jenkins TAG=abc
PUSH_IMAGE_DOCKER=false`, and `python3 scripts/release.py --help`. The
real integration test is the next release cycle's Day 27 dispatch by the
release manager.
## Checklist
- [x] New/modified functions have type hints and rST docstrings
- [x] New tests added for new features or bug fixes
- [x] ~~Database migrations generated if models changed (`make
makemigrations`)~~ *(N/A — no model changes)*
- [x] ~~User-facing changes documented (README, inline help, UI text)~~
*(N/A — release process change, documented in the workflow doc)*
- [x] Configuration changes documented with examples1 parent 1388c9c commit 7dee37e
4 files changed
Lines changed: 1159 additions & 99 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
14 | 15 | | |
15 | 16 | | |
16 | 17 | | |
17 | 18 | | |
18 | | - | |
| 19 | + | |
19 | 20 | | |
20 | 21 | | |
21 | 22 | | |
| |||
54 | 55 | | |
55 | 56 | | |
56 | 57 | | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
57 | 62 | | |
58 | 63 | | |
59 | 64 | | |
| |||
81 | 86 | | |
82 | 87 | | |
83 | 88 | | |
| 89 | + | |
| 90 | + | |
84 | 91 | | |
85 | 92 | | |
86 | 93 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
176 | 176 | | |
177 | 177 | | |
178 | 178 | | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
179 | 186 | | |
180 | 187 | | |
181 | 188 | | |
| |||
194 | 201 | | |
195 | 202 | | |
196 | 203 | | |
197 | | - | |
| 204 | + | |
198 | 205 | | |
199 | 206 | | |
200 | 207 | | |
| |||
204 | 211 | | |
205 | 212 | | |
206 | 213 | | |
207 | | - | |
| 214 | + | |
208 | 215 | | |
209 | 216 | | |
210 | 217 | | |
| |||
219 | 226 | | |
220 | 227 | | |
221 | 228 | | |
222 | | - | |
| 229 | + | |
0 commit comments