putitoutthere 0.1.49 → 0.1.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/MIGRATIONS.md +65 -2
- package/README.md +2 -2
- package/action.yml +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -19,6 +19,8 @@ are prefixed `**BREAKING**` and link to the matching section in
|
|
|
19
19
|
|
|
20
20
|
### Changed
|
|
21
21
|
|
|
22
|
+
- **Reusable workflow + `action.yml` bumped to Node 24-compatible action majors.** GitHub deprecated Node 20 actions in September 2025; the runner forces Node 24 starting June 2, 2026 and removes Node 20 entirely on September 16, 2026. Bumps inside `.github/workflows/release.yml`: `actions/checkout@v4 → @v6`, `actions/setup-node@v4 → @v6`, `actions/setup-python@v5 → @v6`, `actions/upload-artifact@v4 → @v7`, `actions/download-artifact@v4 → @v8`. `action.yml` `runs.using: node20 → node24`. The canonical `pypi-publish` template in the README also bumps `actions/download-artifact@v4 → @v8` so consumers can paste a warning-free template; existing `@v4` copies in consumer workflows keep working but emit the deprecation warning in the caller's context. Artifact contract is unchanged: `download-artifact@v8` preserves the per-name subdirectory layout for downloads-by-name and `upload-artifact@v7`'s default behavior still produces zipped uploads keyed by `name:`. See [MIGRATIONS.md](./MIGRATIONS.md#reusable-workflow--actionyml-move-to-node-24-actions). (#253)
|
|
23
|
+
|
|
22
24
|
- **BREAKING: PyPI uploads moved to a caller-side `pypi-publish` job.** PyPI's Trusted Publisher matching filters candidates by `repository_owner` + `repository_name` *before* checking `job_workflow_ref` ([Warehouse implementation](https://github.com/pypi/warehouse/blob/main/warehouse/oidc/models/github.py)); since the OIDC `repository` claim always reflects the caller's repo even inside a reusable workflow, a TP registered against `thekevinscott/putitoutthere` is filtered out before the workflow_ref is ever checked. PyPI explicitly documents this as unsupported ([troubleshooting](https://docs.pypi.org/trusted-publishers/troubleshooting/)). Tracked at [pypi/warehouse#11096](https://github.com/pypi/warehouse/issues/11096), no timeline. The engine still does plan + build + version-rewrite + git tag for PyPI; the actual upload (`pypa/gh-action-pypi-publish`) now runs in the consumer's workflow file as a second job, gated on `needs.release.outputs.has_pypi`. The canonical template grew from ~12 → ~30 lines but remains a single copy-paste — the `if:` skips the job for non-PyPI repos. See [MIGRATIONS.md](./MIGRATIONS.md#pypi-uploads-moved-to-caller-side-job) and [`notes/audits/2026-04-28-pypi-tp-reusable-workflow-constraint.md`](./notes/audits/2026-04-28-pypi-tp-reusable-workflow-constraint.md).
|
|
23
25
|
- **Public consumer surface collapsed to the README + the reusable workflow.** The CLI, the JS action (`action.yml`), and the diagnostic subcommands (`doctor`, `preflight`) are internal seams the reusable workflow invokes; consumers do not call them. The entire `docs/` directory is removed — `README.md` is the single user-facing surface. See [MIGRATIONS.md](./MIGRATIONS.md#public-surface-collapsed-to-a-reusable-workflow) for the before/after.
|
|
24
26
|
- **Auth is OIDC trusted publishers only.** The reusable workflow does not pass long-lived registry tokens (`NPM_TOKEN`, `PYPI_API_TOKEN`, `CARGO_REGISTRY_TOKEN`) as secrets. The engine's env-var fallback code paths still exist (in `src/auth.ts`); they're just not reachable through the reusable workflow.
|
package/MIGRATIONS.md
CHANGED
|
@@ -21,6 +21,69 @@ Each section covers five things, in order:
|
|
|
21
21
|
|
|
22
22
|
## Unreleased
|
|
23
23
|
|
|
24
|
+
### Reusable workflow + `action.yml` move to Node 24 actions
|
|
25
|
+
|
|
26
|
+
**Summary.** GitHub deprecated Node 20 actions in September 2025; the
|
|
27
|
+
hosted runner forces Node 24 starting June 2, 2026 and removes Node 20
|
|
28
|
+
entirely on September 16, 2026.
|
|
29
|
+
Every workflow run that called `putitoutthere` was emitting deprecation
|
|
30
|
+
warnings — one per job inside the reusable workflow, plus a top-level
|
|
31
|
+
`Actions running on Node.js 20` warning attributed to
|
|
32
|
+
`thekevinscott/putitoutthere@v0` itself, which the consumer could not
|
|
33
|
+
fix locally. The reusable workflow's pinned action majors and the JS
|
|
34
|
+
action's `runs.using` now target Node 24-compatible versions.
|
|
35
|
+
|
|
36
|
+
| Action | Before | After |
|
|
37
|
+
|---|---|---|
|
|
38
|
+
| `actions/checkout` | `@v4` | `@v6` |
|
|
39
|
+
| `actions/setup-node` | `@v4` | `@v6` |
|
|
40
|
+
| `actions/setup-python` | `@v5` | `@v6` |
|
|
41
|
+
| `actions/upload-artifact` | `@v4` | `@v7` |
|
|
42
|
+
| `actions/download-artifact` | `@v4` | `@v8` |
|
|
43
|
+
| `action.yml` `runs.using` | `node20` | `node24` |
|
|
44
|
+
|
|
45
|
+
**Required changes.** Consumers calling the reusable workflow at
|
|
46
|
+
`thekevinscott/putitoutthere/.github/workflows/release.yml@v0` get the
|
|
47
|
+
new pins automatically — no consumer-side YAML changes required. The
|
|
48
|
+
caller-side `pypi-publish` job in the canonical template now uses
|
|
49
|
+
`actions/download-artifact@v8`; existing copies still pinned at `@v4`
|
|
50
|
+
keep working but should be bumped to silence the same deprecation
|
|
51
|
+
warning in the consumer's own workflow file:
|
|
52
|
+
|
|
53
|
+
```diff
|
|
54
|
+
pypi-publish:
|
|
55
|
+
...
|
|
56
|
+
steps:
|
|
57
|
+
- - uses: actions/download-artifact@v4
|
|
58
|
+
+ - uses: actions/download-artifact@v8
|
|
59
|
+
with:
|
|
60
|
+
pattern: '*-sdist'
|
|
61
|
+
...
|
|
62
|
+
- - uses: actions/download-artifact@v4
|
|
63
|
+
+ - uses: actions/download-artifact@v8
|
|
64
|
+
with:
|
|
65
|
+
pattern: '*-wheel-*'
|
|
66
|
+
...
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Deprecations removed.** None.
|
|
70
|
+
|
|
71
|
+
**Behavior changes without code changes.** Reusable workflow jobs now
|
|
72
|
+
run under Node 24 instead of Node 20. The artifact contract is
|
|
73
|
+
unchanged — `download-artifact@v8` preserves the per-name subdirectory
|
|
74
|
+
layout (`artifacts/<artifact-name>/<file>`) for downloads-by-name, and
|
|
75
|
+
`upload-artifact@v7`'s default still produces zipped uploads keyed by
|
|
76
|
+
the `name:` parameter. `download-artifact@v8` now fails on artifact
|
|
77
|
+
hash mismatches by default (was a warning in `@v4`); this is an
|
|
78
|
+
integrity check, not a behavior change for healthy uploads.
|
|
79
|
+
|
|
80
|
+
**Verification.** A consumer release run no longer emits the
|
|
81
|
+
`Actions running on Node.js 20 ... thekevinscott/putitoutthere@v0`
|
|
82
|
+
deprecation warning, nor the per-job warnings against `actions/checkout@v4`
|
|
83
|
+
et al. Tag, GitHub Release, and registry uploads occur as before.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
24
87
|
### PyPI uploads moved to caller-side job
|
|
25
88
|
|
|
26
89
|
**Summary.** PyPI's Trusted Publisher matching filters candidates by
|
|
@@ -82,12 +145,12 @@ jobs:
|
|
|
82
145
|
permissions:
|
|
83
146
|
id-token: write
|
|
84
147
|
steps:
|
|
85
|
-
- uses: actions/download-artifact@
|
|
148
|
+
- uses: actions/download-artifact@v8
|
|
86
149
|
with:
|
|
87
150
|
pattern: '*-sdist'
|
|
88
151
|
path: dist/
|
|
89
152
|
merge-multiple: true
|
|
90
|
-
- uses: actions/download-artifact@
|
|
153
|
+
- uses: actions/download-artifact@v8
|
|
91
154
|
with:
|
|
92
155
|
pattern: '*-wheel-*'
|
|
93
156
|
path: dist/
|
package/README.md
CHANGED
|
@@ -35,12 +35,12 @@ jobs:
|
|
|
35
35
|
permissions:
|
|
36
36
|
id-token: write
|
|
37
37
|
steps:
|
|
38
|
-
- uses: actions/download-artifact@
|
|
38
|
+
- uses: actions/download-artifact@v8
|
|
39
39
|
with:
|
|
40
40
|
pattern: '*-sdist'
|
|
41
41
|
path: dist/
|
|
42
42
|
merge-multiple: true
|
|
43
|
-
- uses: actions/download-artifact@
|
|
43
|
+
- uses: actions/download-artifact@v8
|
|
44
44
|
with:
|
|
45
45
|
pattern: '*-wheel-*'
|
|
46
46
|
path: dist/
|
package/action.yml
CHANGED
|
@@ -25,5 +25,5 @@ outputs:
|
|
|
25
25
|
description: "JSON matrix emitted by `plan`. Output key is omitted when the plan resolves to zero rows or when command is anything other than plan; downstream jobs should coalesce with `|| '[]'`."
|
|
26
26
|
|
|
27
27
|
runs:
|
|
28
|
-
using: '
|
|
28
|
+
using: 'node24'
|
|
29
29
|
main: 'dist-action/index.js'
|