|
1 | | -## 2026-02-25 — Add selective publishing inputs to release.yml |
| 1 | +## 2026-02-25 — Review of: Add selective publishing inputs to release.yml |
2 | 2 |
|
3 | | -**Done:** Added three boolean `workflow_dispatch` inputs (`crates-io`, `pypi`, `npm`) and `if:` |
4 | | -conditions to all 8 jobs in `release.yml`. Tag pushes activate all jobs as before; manual dispatch |
5 | | -allows selecting individual registries via checkboxes in the GitHub Actions UI. |
| 3 | +**Verdict:** PASS |
6 | 4 |
|
7 | | -**Files changed:** |
8 | | - |
9 | | -- `.github/workflows/release.yml`: Added `inputs:` block under `workflow_dispatch:` with three |
10 | | - boolean inputs. Added `if: startsWith(github.ref, 'refs/tags/v') || inputs.<registry>` to all 8 |
11 | | - jobs (`publish-crates-io`, `build-wheels`, `build-sdist`, `publish-pypi`, `build-napi`, |
12 | | - `build-wasm`, `publish-npm-lib`, `publish-npm-wasm`). Updated existing tag-only conditions on |
13 | | - `publish-npm-lib` and `publish-npm-wasm` to include `|| inputs.npm`. |
| 5 | +**Summary:** Clean, minimal implementation adding three `workflow_dispatch` boolean inputs and `if:` |
| 6 | +conditions to all 8 jobs in `release.yml`. Exactly matches the spec in `specs/ci-cd.md`. No changes |
| 7 | +to permissions, concurrency, triggers, or build logic — scope discipline is perfect. |
14 | 8 |
|
15 | 9 | **Verification:** |
16 | 10 |
|
17 | | -- [x] `grep -q 'crates-io:' .github/workflows/release.yml` — input defined |
18 | | -- [x] `grep -q 'pypi:' .github/workflows/release.yml` — input defined |
| 11 | +- [x] `grep -q 'crates-io:' .github/workflows/release.yml` exits 0 — input defined |
| 12 | +- [x] `grep -q 'pypi:' .github/workflows/release.yml` exits 0 — input defined |
19 | 13 | - [x] `grep -c 'inputs\.' .github/workflows/release.yml` returns 8 — all jobs have conditions |
20 | | -- [x] `grep -q "inputs.crates-io"` — crates.io condition present |
21 | | -- [x] `grep -q "inputs.pypi"` — PyPI condition present |
22 | | -- [x] `grep -q "inputs.npm"` — npm condition present |
23 | | -- [x] `python3 -c "import yaml; yaml.safe_load(...)"` — valid YAML |
| 14 | +- [x] `grep -q "inputs.crates-io" .github/workflows/release.yml` exits 0 — crates.io condition |
| 15 | + present |
| 16 | +- [x] `grep -q "inputs.pypi" .github/workflows/release.yml` exits 0 — PyPI condition present |
| 17 | +- [x] `grep -q "inputs.npm" .github/workflows/release.yml` exits 0 — npm condition present |
| 18 | +- [x] `python3 -c "import yaml; yaml.safe_load(...)"` exits 0 — valid YAML |
24 | 19 | - [x] `mise run check` — all 14 quality gate hooks pass |
25 | 20 |
|
| 21 | +**Issues found:** |
| 22 | + |
| 23 | +- (none) |
| 24 | + |
26 | 25 | **Next:** The second critical release issue: add idempotency checks to each publish job so |
27 | | -re-publishing an existing version skips gracefully. This is the remaining blocker for the first |
28 | | -`v0.0.1` publish. |
| 26 | +re-publishing an existing version skips gracefully instead of failing the workflow. This is the last |
| 27 | +blocker for the first `v0.0.1` publish. |
29 | 28 |
|
30 | | -**Notes:** Straightforward change — no surprises. The `permissions`, `concurrency`, trigger events, |
31 | | -and build step logic were left untouched as specified. No tests needed since this is a workflow |
32 | | -configuration change (verified structurally via grep and YAML parsing). |
| 29 | +**Notes:** Resolved `[critical] Implement selective publishing in release.yml` issue and updated the |
| 30 | +CI/CD spec verification criteria to reflect the 5 newly-passing selective publishing checkboxes. |
0 commit comments