Commit 251cdc7
ci: drop third-party actions from the publish workflow
This org enforces a GitHub Actions allowlist, and a disallowed action fails
the *entire workflow* at startup rather than just its own job — that is what
left CI dead for eight days (see PR #50). publish.yml referenced two
non-GitHub actions, `astral-sh/setup-uv` and `pypa/gh-action-pypi-publish`,
either of which could have produced a `startup_failure`. A publish workflow
that cannot start is one that silently never ships, and this one would only
be exercised at the moment of an actual release.
Every `uses:` is now an `actions/*` action. uv is installed from a pinned,
versioned install script and performs the upload itself.
`--trusted-publishing always` rather than `automatic`, so a broken publisher
config fails loudly instead of falling back to hunting for a token.
`--check-url` makes a re-run idempotent, skipping already-uploaded files —
which matters because `fail-fast: false` means a partial publish is a state
we can land in and need to resume from.
The tradeoff is losing PEP 740 attestations: uv uploads them but does not
generate them, and the action that does may not be allowlisted. Provenance
is worth nothing if the workflow cannot start. Documented in RELEASING.md as
something to revisit.
Verified locally: the pinned install script yields exactly uv 0.11.4, and
`uv publish --trusted-publishing always` outside an OIDC environment exits 2
with "No OIDC token discovered" rather than hanging or falling back.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>1 parent 05dc0de commit 251cdc7
2 files changed
Lines changed: 63 additions & 13 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
8 | 15 | | |
9 | 16 | | |
10 | 17 | | |
| |||
20 | 27 | | |
21 | 28 | | |
22 | 29 | | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
23 | 35 | | |
24 | 36 | | |
25 | 37 | | |
| |||
29 | 41 | | |
30 | 42 | | |
31 | 43 | | |
32 | | - | |
33 | | - | |
34 | | - | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
35 | 48 | | |
36 | 49 | | |
37 | 50 | | |
| |||
125 | 138 | | |
126 | 139 | | |
127 | 140 | | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
132 | 155 | | |
133 | 156 | | |
134 | 157 | | |
| |||
160 | 183 | | |
161 | 184 | | |
162 | 185 | | |
163 | | - | |
164 | | - | |
165 | | - | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
166 | 203 | | |
167 | 204 | | |
168 | 205 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
54 | | - | |
| 54 | + | |
55 | 55 | | |
56 | 56 | | |
57 | | - | |
58 | | - | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
59 | 72 | | |
60 | 73 | | |
61 | 74 | | |
| |||
0 commit comments