Skip to content

ci: pin GitHub Actions to Node 24 releases by SHA - #190

Merged
kevincostner17 merged 1 commit into
mainfrom
ci/bump-actions-node24-pins
Sep 14, 2026
Merged

kevincostner17 merged 1 commit into
mainfrom
ci/bump-actions-node24-pins

Conversation

@kevincostner17

Copy link
Copy Markdown
Contributor

Summary

Every workflow run currently logs:

Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-python@v5, …

release.yml was already SHA-pinned, but its pins point at Node 20 releases. This PR pins every action in all 15 workflows to its current Node 24 release by commit SHA, with the exact version in a trailing comment:

Action From To
actions/checkout v4 / v4.3.1 v7.0.1 3d3c42e
actions/setup-python v5 / v5.6.0 v7.0.0 5fda3b9
actions/cache v4 v6.1.0 55cc834
actions/upload-artifact v4 / v4.6.2 v7.0.1 043fb46
actions/download-artifact v4.3.0 v8.0.1 3e5f45b
actions/github-script v7 v9.0.0 3a2844b
actions/attest-build-provenance v2.4.0 v4.2.2 4d10147
pypa/gh-action-pypi-publish v1.14.0 v1.14.2 dc37677
softprops/action-gh-release v2.6.2 v3.0.3 efb3536

It also moves pull-requests: write in benchmark.yml from workflow level down to the benchmark job, the only job that posts the PR comment.

Breaking-change review

I checked each major release's notes against how these workflows use the action. None require workflow edits:

  • checkout v6: saved credentials moved to $RUNNER_TEMP via includeIf. The steps that push with saved credentials (release.yml tag push, docs.yml gh-deploy) run inside the workspace, so they still work.
  • checkout v7: blocks fork checkout only for pull_request_target/workflow_run, which no workflow uses.
  • upload-artifact v7: the new archive input defaults to true, and no job uploads from a matrix, so artifact names can't collide.
  • download-artifact v5: the path-layout change only affects downloads by artifact ID. release.yml downloads by name: dist.
  • download-artifact v8: digest mismatches now fail the job (fail-closed, which fits the release pipeline).
  • github-script v9: drops require('@actions/github') and reserves getOctokit. We use neither; only require('fs') and github.rest.issues.*.
  • attest-build-provenance v4: provenance mode and comma-separated subject-path are unchanged. The new permission is only needed with push-to-registry, which isn't used.
  • setup-python v7 / cache v6: input-compatible. Expect one pip-cache miss per job, because v6.3 adds the OS distro to the cache key.
  • All: jobs run on GitHub-hosted ubuntu-latest, so the new minimum runner versions don't apply.

Verification

  • All 15 workflow files parse as YAML.
  • grep uses: shows only the SHA-pinned versions listed above.
  • This PR's own checks exercise checkout, setup-python, cache and upload-artifact. release.yml changes take effect on the next tag.

Every workflow logged Node 20 deprecation warnings (checkout@v4,
setup-python@v5, cache@v4, upload-artifact@v4, github-script@v7), and
release.yml's SHA pins still pointed at Node 20 releases.

Pin all actions to their current Node 24 releases by commit SHA with the
exact version in a trailing comment:
checkout v7.0.1, setup-python v7.0.0, cache v6.1.0, upload-artifact v7.0.1,
download-artifact v8.0.1, github-script v9.0.0, attest-build-provenance
v4.2.2, gh-action-pypi-publish v1.14.2, action-gh-release v3.0.3.

Release notes were reviewed against every usage; none of the breaking
changes affect these workflows. benchmark.yml now grants
pull-requests: write only to its job instead of the whole workflow.
@coderabbitai

coderabbitai Bot commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: ab27faf8-2abb-4db5-aaf0-ceea83882ba9


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown

FreshData benchmark report — performance

  • freshdata: ?
  • python: ?
  • platform: ?
fixture n_rows n_cols p50 s p95 s peak MB repair % false-repair % preserve % trust monotonic export %

Authored-code reduction (Metric 6)

@kevincostner17
kevincostner17 merged commit 47af326 into main Sep 14, 2026
16 of 17 checks passed
kevincostner17 added a commit that referenced this pull request Sep 14, 2026
test-matrix (3.9) has failed on main since #187: with pandas 1.5, the
streaming state converted numeric columns via
pd.to_numeric(s).to_numpy(dtype="float64"), which raises "cannot convert to
'float64'-dtype NumPy array with missing values" for nullable (masked)
integer columns with NA. fd.clean_timeseries and StreamingCleaner hit it on
any Int*/UInt* column with gaps.

Pass na_value=np.nan there and in the time-series interpolation helper,
which has the same conversion. Also pin the alert step #188 added to
fetch-fixtures.yml, which #190's SHA sweep predated.
@kevincostner17
kevincostner17 deleted the ci/bump-actions-node24-pins branch September 14, 2026 18:58
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