Commit 66f7811
authored
ci: fix dry-run job graph, embed deploy commands in DEPLOY.md, correct runbook (#4040)
## Summary of Changes
* **Fix dry runs dead-ending after `stage-programs`** (found on runs
[29106365876](https://github.com/malbeclabs/doublezero/actions/runs/29106365876)
and
[29109225537](https://github.com/malbeclabs/doublezero/actions/runs/29109225537)):
the job-level `if: !inputs.dry_run` skip on `push-tags` transitively
skipped every downstream job with a default status condition — a skipped
ancestor poisons `success()` for the whole graph below it, even past
`verify-cloudsmith`'s own `if:` override — so `gate-programs` through
`announce` could never run in dry-run mode (confirmed: no deployment
record was ever created for `gate-programs`; it skipped in graph
evaluation before environment processing). The tag reusable workflow
gains a `dry_run` input that makes each tag job a validated no-op,
`push-tags` now runs in every mode, `verify-cloudsmith`'s special-case
condition is deleted, and the tag-approval Slack nudge fires in dry runs
too. Net effect: dry runs now traverse the full graph, and exercise the
same `testnet` tag-approval prompt as a real release (one extra approval
click per dry run).
* The generated `DEPLOY.md` embeds the exact program-deploy commands —
`cd` into the staged release dir, the three `solana program deploy`
invocations with keypairs under `~/testnet-ops/` (absolute: the [infra
runbook](https://github.com/malbeclabs/infra/blob/main/docs/runbooks/deploys/solana-programs-testnet.md)'s
relative `./testnet-ops/` paths assume `~`, no longer true once the
operator cds into `/opt/doublezero/program-releases/vX.Y.Z/`), and
`doublezero init` — replacing the retired Notion reference.
* Runbook: dry-run section documents the no-op tag jobs and full
approval sequence; recovery guidance prefers "Re-run all jobs" after
mid-pipeline failures and says to verify a re-run actually executed the
expected jobs before trusting its green check.
## Testing Verification
* The dry-run dead-end reproduced identically on a fresh dispatch (not
just re-runs), with `gate-programs` skipped the second its needs
completed, zero annotations, and no deployment record — ruling out
environment protection and matching transitive-skip semantics exactly.
* `DEPLOY.md` generation block extracted from the YAML and rendered in a
sandbox: multi-line commands, literal `~` paths, and interpolated
version all correct.
* actionlint on both workflows: only the pre-existing SC2086 (agave
install idiom, untouched).
* Full validation is the next dry run after merge (fresh dispatch —
workflow-file changes don't apply to re-runs).
Follow-up (not in this PR): a `pipeline-complete` guard job so a hollow
"success" fails loudly.1 parent 3c17fbd commit 66f7811
4 files changed
Lines changed: 70 additions & 21 deletions
File tree
- .github/workflows
- docs
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
19 | 24 | | |
20 | 25 | | |
21 | 26 | | |
| |||
48 | 53 | | |
49 | 54 | | |
50 | 55 | | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
51 | 61 | | |
52 | 62 | | |
53 | 63 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
205 | 205 | | |
206 | 206 | | |
207 | 207 | | |
208 | | - | |
209 | 208 | | |
210 | | - | |
211 | 209 | | |
212 | 210 | | |
213 | 211 | | |
| |||
216 | 214 | | |
217 | 215 | | |
218 | 216 | | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
219 | 221 | | |
220 | | - | |
221 | 222 | | |
222 | 223 | | |
223 | 224 | | |
| |||
238 | 239 | | |
239 | 240 | | |
240 | 241 | | |
| 242 | + | |
241 | 243 | | |
242 | 244 | | |
243 | 245 | | |
244 | 246 | | |
245 | 247 | | |
246 | 248 | | |
247 | | - | |
248 | | - | |
249 | 249 | | |
250 | 250 | | |
251 | 251 | | |
| |||
305 | 305 | | |
306 | 306 | | |
307 | 307 | | |
| 308 | + | |
308 | 309 | | |
309 | 310 | | |
310 | 311 | | |
| |||
318 | 319 | | |
319 | 320 | | |
320 | 321 | | |
321 | | - | |
322 | | - | |
323 | | - | |
324 | | - | |
325 | | - | |
326 | | - | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
327 | 349 | | |
328 | 350 | | |
329 | 351 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
| 50 | + | |
| 51 | + | |
50 | 52 | | |
51 | 53 | | |
52 | 54 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
58 | | - | |
| 58 | + | |
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
| |||
78 | 78 | | |
79 | 79 | | |
80 | 80 | | |
81 | | - | |
82 | | - | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
83 | 86 | | |
84 | 87 | | |
85 | | - | |
86 | | - | |
87 | | - | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
88 | 92 | | |
89 | 93 | | |
90 | 94 | | |
91 | 95 | | |
92 | 96 | | |
93 | 97 | | |
94 | | - | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
95 | 107 | | |
96 | 108 | | |
97 | 109 | | |
98 | 110 | | |
99 | 111 | | |
100 | | - | |
| 112 | + | |
101 | 113 | | |
102 | | - | |
103 | | - | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
0 commit comments