Skip to content

ci: bring every action up to a node 24 runtime - #89

Merged
askides merged 1 commit into
mainfrom
ci/bump-actions
Aug 5, 2026
Merged

ci: bring every action up to a node 24 runtime#89
askides merged 1 commit into
mainfrom
ci/bump-actions

Conversation

@askides

@askides askides commented Aug 5, 2026

Copy link
Copy Markdown
Owner

Every run currently warns that Node 20 is deprecated and that the actions are
being force-run on Node 24. That forcing is a grace period, not a fix — and the
pins had drifted badly besides.

Action Was Now
actions/checkout v4 v7
actions/setup-node v4 v7
actions/upload-artifact v4 v7
actions/download-artifact v4 v8
pnpm/action-setup v4 v6
docker/build-push-action v6 v7
docker/login-action v3 v4
docker/metadata-action v5 v6
docker/setup-buildx-action v3 v4
googleapis/release-please-action v4 v5

Breaking changes, checked rather than assumed

Ten majors at once through a release pipeline is a good way to discover a
renamed output the hard way, so each one was read:

  • checkout v5–v7 — node24, credential handling, and a fork-checkout block
    that applies to pull_request_target / workflow_run. This workflow uses
    neither.
  • setup-node v5 added automatic caching keyed off packageManager;
    v6 narrowed it to npm only. Both moot — cache: pnpm is set explicitly.
  • download-artifact v5 changed the output path for single downloads by
    ID
    ; the merge job downloads by pattern. v8 now errors on a digest
    mismatch rather than warning, which is the behaviour worth having. Confirmed
    pattern and merge-multiple still exist in v8's action.yml.
  • upload-artifact v7 added unzipped single-file uploads behind a new
    archive input, which defaults to the previous behaviour.
  • docker actions are node24 + ESM. Confirmed against each action.yml
    that build-push-action still exports digest, and metadata-action still
    exports tags, labels and json — the three this workflow reads.
    setup-buildx-action@v4 dropped deprecated inputs; none are passed here.
  • release-please-action v5's only breaking change is the node24 runtime.
    Config handling and the release_created / tag_name outputs — which gate
    the semver image tags — are unchanged.

What this PR cannot prove

release, publish and merge are push-only, so this PR exercises
checkout, setup-node and pnpm/action-setup in Lint/Web/Commitlint and
setup-buildx-action + build-push-action in the Docker gate — but not
release-please, the artifact round-trip, or the manifest merge. Those first run
on merge to main.

The merge job asserts both architectures are on the published manifest and
fails if not, so a broken artifact hand-off surfaces as a red run rather than a
single-arch latest.

The runners now warn on all of them: Node 20 is deprecated and every action
here was being force-run on Node 24 already. That forcing is a grace period,
not a fix, and the pins had drifted several majors behind besides —
checkout was on v4 against v7, download-artifact on v4 against v8.

Each major was read rather than assumed, since a release pipeline is a poor
place to discover a changed output name:

- checkout v5-v7 are node24, credential handling and a fork-checkout block
  for pull_request_target and workflow_run, which this workflow does not use.
- setup-node v5 added automatic caching keyed off `packageManager`, and v6
  narrowed it to npm. Both are moot here: `cache: pnpm` is set explicitly.
- download-artifact v5 changed the output path for single downloads *by id*;
  the merge job downloads by pattern. v8 now errors on a digest mismatch
  instead of warning, which is the behaviour worth having. `pattern` and
  `merge-multiple` both still exist.
- upload-artifact v7 added unzipped single-file uploads behind `archive`,
  which defaults to the old behaviour.
- The docker actions are node24 and ESM. build-push-action still exports
  `digest` and metadata-action still exports `tags`, `labels` and `json` —
  the three this workflow reads. setup-buildx-action dropped deprecated
  inputs; none are passed here.
- release-please-action v5 is node24 and nothing else; the config and the
  `release_created` and `tag_name` outputs are unchanged.
@askides
askides merged commit 3888337 into main Aug 5, 2026
7 checks passed
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