Skip to content

Bump checkout and setup-node to v7; dry-run the release job in CI - #60

Merged
jameskfry merged 1 commit into
mainfrom
ci/bump-actions
Oct 8, 2026
Merged

jameskfry merged 1 commit into
mainfrom
ci/bump-actions

Conversation

@jameskfry

Copy link
Copy Markdown
Owner

Summary

Moves the workflows from actions/checkout@v4 / actions/setup-node@v4 (Node 20 runtime, which GitHub now forces onto Node 24 with a deprecation warning) to @v7, the current major of both.

Why it is safe to jump three majors

Read the breaking changes of v5, v6 and v7 of both actions against what the two workflows actually do:

Change Applies here?
checkout v5/setup-node v5: node24 runtime, runner >= 2.327.1 GitHub-hosted runners are newer
checkout v6: credentials kept in a file under RUNNER_TEMP, not .git/config sync-version does git push; the notes say git push keeps working with no change
checkout v7: refuses fork PR code under pull_request_target / workflow_run neither is used
setup-node v5/v6: automatic npm caching when packageManager is set in package.json it is not set (CI asks for cache: npm explicitly)
setup-node v6: always-auth removed not used
setup-node v7: dummy NODE_AUTH_TOKEN removed when registry-url has no token the notes say npm Trusted Publishing (OIDC) is not affected; that is how npm-publish.yml publishes

The one workflow I can't run without releasing

npm-publish.yml only runs when a release is published, and the last row above is exactly the kind of change that would break it. So:

  • New release job in CI ("Release dry run"): the release job's setup (registry-url without a token, latest npm, a version set from a tag, npm ci) up to npm publish --dry-run. No credentials, nothing sent. It runs on every PR and is part of the aggregate CI check, so a future action or npm change that breaks the release job fails here instead of at release time.
  • npm-publish.yml also gets package-manager-cache: false (what the setup-node docs recommend for a job that holds id-token: write + contents: write). It is a no-op today, a guard against it silently changing.

OIDC itself (the token exchange) can only be exercised by a real release; the dry run covers everything around it.

Test plan

  • CI on this PR (first run of v7 in the repo, including the new release dry run)

🤖 Generated with Claude Code

Both ran on the deprecated Node 20 runtime (GitHub forces Node 24 on them and
warns). v5 moved them to node24; v7 is current.

Checked against the breaking changes of v5 to v7: neither workflow uses
pull_request_target / workflow_run (checkout v7); the sync-version job's
`git push` keeps working with the credentials checkout v6 now keeps in a file
under RUNNER_TEMP; package.json has no `packageManager` field, so no cache is
enabled implicitly (setup-node v5/v6); the removed dummy NODE_AUTH_TOKEN
(setup-node v7) does not concern npm Trusted Publishing (OIDC), which is how
the release publishes.

The release workflow only runs when a release is published, so the only way to
find out that an action or npm change broke it was to cut a release. The new
`release` CI job runs its setup (registry-url without a token, the latest npm,
a version taken from a tag, the prepublishOnly build) up to a `npm publish
--dry-run`, on every run, and is part of the required `CI` check. The release
workflow also stops setup-node from restoring a package-manager cache in a job
that can publish.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@jameskfry
jameskfry merged commit 0a5dd99 into main Oct 8, 2026
10 checks passed
@jameskfry
jameskfry deleted the ci/bump-actions branch October 8, 2026 20:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant