Skip to content

ci: bump GitHub Actions to Node 24 runtimes#208

Merged
ryota-murakami merged 2 commits into
mainfrom
ci/node24-actions
Jun 13, 2026
Merged

ci: bump GitHub Actions to Node 24 runtimes#208
ryota-murakami merged 2 commits into
mainfrom
ci/node24-actions

Conversation

@ryota-murakami

@ryota-murakami ryota-murakami commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

Why

GitHub forces node20 JavaScript actions onto the Node 24 runner starting 2026-06-16, and removes Node 20 from runners on 2026-09-16. CI currently pins six actions whose action.yml declares runs.using: node20, which already emits deprecation annotations and breaks once Node 20 is removed.

What

Bumped every repo-owned action to the lowest major that declares runs.using: node24, verified against each action's raw action.yml at the pinned tag (binding evidence — not release notes):

Action Change runs.using at target
actions/checkout v4 → v5 (×6 workflows) node24
actions/cache v4 → v5 (×2) node24
actions/upload-artifact v4 → v6 (×2) node24v5 is still node20, so v6 is the lowest node24 major
pnpm/action-setup v4 → v5 (composite prepare) node24
actions/setup-node v4 → v5 (composite prepare) node24
codecov/codecov-action kept at v5 composite wrapper — exempt from the node20 JS-action deprecation; no node24 major exists

Notes

  • node-version: '22' in the prepare composite is the build toolchain Node, unrelated to the action-runtime deprecation — left unchanged.
  • Residual (out of scope): codecov-action@v5 transitively pins actions/github-script@v7 (node20). codecov@v6 (also composite) updates that leaf to github-script@v8 (node24) if zero transitive node20 noise is later desired.
  • All 7 files parse as valid YAML; runs.using: node24 re-confirmed by fetching each pinned tag. The deprecation annotation is eliminated by construction for all repo-owned refs — this PR's own CI run is the live confirmation.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • CI/CD ワークフローで利用する主要なアクションを最新メジャーバージョンへ更新し、複数のワークフローで一貫化しました。これによりビルド、テスト、E2E、型チェック、Lint、アーティファクト管理などのパイプライン安定性と互換性が向上します。

GitHub forces node20 JavaScript actions onto the Node 24 runner from
2026-06-16 and removes Node 20 from runners on 2026-09-16. Bump every
repo-owned action whose action.yml declares runs.using: node20 to the
lowest major that declares node24 (verified against each action's raw
action.yml at the pinned tag):

- actions/checkout        v4 -> v5  (node24)
- actions/cache           v4 -> v5  (node24)
- actions/upload-artifact v4 -> v6  (v5 is STILL node20; v6 is node24)
- pnpm/action-setup       v4 -> v5  (node24)
- actions/setup-node      v4 -> v5  (node24)

codecov/codecov-action stays at v5: its action.yml is runs.using:
composite (a wrapper, exempt from the node20 JS-action deprecation) and
no major declares node24. Residual: it transitively pins
github-script@v7 (node20); codecov@v6 would update that leaf to
github-script@v8 (node24) -- out of scope here.

node-version: '22' in the prepare composite is the build toolchain Node,
unrelated to the action-runtime deprecation, and is left unchanged.
@vercel

vercel Bot commented Jun 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
skills-desktop Ready Ready Preview, Comment Jun 13, 2026 2:24pm

Request Review

@coderabbitai

coderabbitai Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

GitHub Actions のマーケットプレイスアクション群を一括バージョン更新。Composite action 内の pnpm/action-setup、actions/setup-node を v5 に、全ワークフロー内の actions/checkout を v5 に、e2e と test ワークフロー内のキャッシュ管理と成果物アップロードアクションを v5~v6 に更新。

Changes

GitHub Actions依存関係更新

Layer / File(s) Summary
Compositeアクション内のセットアップツール更新
.github/actions/prepare/action.yml
prepare action の pnpm/action-setupactions/setup-node を v4→v5 に更新。
ワークフロー全体のCheckoutアクション更新
.github/workflows/build.yml, .github/workflows/e2e.yml, .github/workflows/fallow.yml, .github/workflows/lint.yml, .github/workflows/test.yml, .github/workflows/typecheck.yml
複数ワークフロー内の actions/checkout を v4→v5(v5 のコミットSHAピン留め含む)に統一更新。
E2E/Test のキャッシュとアーティファクト更新
.github/workflows/test.yml, .github/workflows/e2e.yml
actions/cache を v4→v5 に、e2e の actions/upload-artifact を v4→v6 に更新(ワークフローのロジックは変更なし)。

🎯 2 (Simple) | ⏱️ ~10 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PRタイトルは「ci: bump GitHub Actions to Node 24 runtimes」ですが、実際の変更は GitHub Actions の複数バージョン(actions/checkout v4→v5、actions/cache v4→v5、actions/upload-artifact v4→v6、pnpm/action-setup v4→v5、actions/setup-node v4→v5)を Node 24 対応にアップグレードするもので、タイトルは主な変更を正確に反映しています。
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/node24-actions

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

@codecov-commenter

codecov-commenter commented Jun 13, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 66.68%. Comparing base (d77992a) to head (308ba04).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #208   +/-   ##
=======================================
  Coverage   66.68%   66.68%           
=======================================
  Files         198      198           
  Lines        6127     6127           
  Branches     1384     1384           
=======================================
  Hits         4086     4086           
  Misses       1623     1623           
  Partials      418      418           
Flag Coverage Δ
unittests 66.68% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/build.yml:
- Around line 14-15: In the Checkout step using actions/checkout@v5, pin the
action to a specific commit SHA instead of the floating tag and explicitly
disable credential persistence: change the uses reference to the full commit SHA
for actions/checkout and add persist-credentials: false under the step (the step
labeled "Checkout" that currently uses actions/checkout@v5) so the checkout
action is immutably pinned and Git credentials are not written into the local
repo config.

In @.github/workflows/fallow.yml:
- Around line 28-29: Replace the Checkout step that currently uses
"actions/checkout@v5" so it pins the action to the full commit SHA (e.g., "uses:
actions/checkout@<full-sha>") and add a with block that sets
"persist-credentials: false" (i.e., add "with:" then "persist-credentials:
false" under the Checkout step). Update the step named "Checkout" (the one with
uses: actions/checkout@v5) accordingly, and apply the same pinning +
persist-credentials change to any other workflows that still reference
actions/checkout@v5.

In @.github/workflows/lint.yml:
- Around line 14-15: The Checkout step currently uses the floating reference
"uses: actions/checkout@v5"; replace that with a fixed commit SHA (e.g.,
actions/checkout@<commit-sha> for the v5 release you verified) and add a with
block setting persist-credentials: false under the same step (the step named
"Checkout" that contains the uses: actions/checkout... line) so the step both
pins the action to a specific SHA and disables credential persistence.

In @.github/workflows/test.yml:
- Around line 14-15: Replace the tag references for GitHub Actions usages with
commit SHAs and add the persist-credentials setting: change the step using
"actions/checkout@v5" (the "Checkout" step) to use the corresponding commit SHA
instead of `@v5` and add a with block containing "persist-credentials: false";
likewise change any "actions/cache@v5" uses to their specific commit SHAs;
ensure indentation/ YAML structure is correct so the new with: block nests under
the checkout step and the uses lines are updated to the SHA values.

In @.github/workflows/typecheck.yml:
- Around line 14-15: The workflow uses a floating tag for the checkout action
and doesn't disable credential persistence: replace the uses:
actions/checkout@v5 reference by pinning to the specific commit SHA for
actions/checkout, and add a with: persist-credentials: false block so the
checkout step (uses: actions/checkout@v5) is pinned to a commit SHA and will not
persist credentials.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: e066ed69-24e2-44b5-ac66-03aa6c73f05e

📥 Commits

Reviewing files that changed from the base of the PR and between d77992a and eab7208.

📒 Files selected for processing (7)
  • .github/actions/prepare/action.yml
  • .github/workflows/build.yml
  • .github/workflows/e2e.yml
  • .github/workflows/fallow.yml
  • .github/workflows/lint.yml
  • .github/workflows/test.yml
  • .github/workflows/typecheck.yml

Comment thread .github/workflows/build.yml Outdated
Comment thread .github/workflows/fallow.yml Outdated
Comment thread .github/workflows/lint.yml Outdated
Comment thread .github/workflows/test.yml Outdated
Comment thread .github/workflows/typecheck.yml Outdated
…ence

Address CodeRabbit/zizmor SAST findings (unpinned-uses + artipacked) across
all 5 workflows: pin actions/checkout@v5 to 93cb6ef and add
persist-credentials: false. Verified safe — no workflow reuses git
credentials after checkout (the only token use is CODECOV_TOKEN passed
directly to codecov-action).
@ryota-murakami

Copy link
Copy Markdown
Contributor Author

Applied in 308ba04 — all 5 workflow actions/checkout steps pinned to commit SHA 93cb6efe18208431cddfb8368fd83d5badbf9bfd (# v5) and persist-credentials: false added. Verified safe: no workflow reuses git credentials post-checkout (the only token use is CODECOV_TOKEN passed directly to codecov-action). Addresses zizmor unpinned-uses + artipacked.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/test.yml (1)

22-27: 🧹 Nitpick | 🔵 Trivial | ⚡ Quick win

キャッシュアクションをコミットSHA固定することを推奨

actions/cache@v5 はタグ参照のままです。チェックアウトと同様に、キャッシュアクションもコミットSHAで固定すると供給チェーン攻撃面を削減できます。この変更は今後の強化ステップとして検討してください。

提案される修正
       - name: Cache Playwright browsers
         id: playwright-cache
-        uses: actions/cache@v5
+        uses: actions/cache@704facf57c5d97d75bc9913a4caf61d562658cdf # v5
         with:
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/test.yml around lines 22 - 27, The workflow step "Cache
Playwright browsers" currently references the cache action by tag (uses:
actions/cache@v5); pin this to a specific commit SHA instead to reduce
supply-chain risk — update the uses value for the step with id playwright-cache
(the "Cache Playwright browsers" step) from actions/cache@v5 to
actions/cache@<commit-sha> where <commit-sha> is the full commit SHA for the
actions/cache release you'd like to pin (obtain from the actions/cache
repository), leaving the rest of the step (path, key) unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In @.github/workflows/test.yml:
- Around line 22-27: The workflow step "Cache Playwright browsers" currently
references the cache action by tag (uses: actions/cache@v5); pin this to a
specific commit SHA instead to reduce supply-chain risk — update the uses value
for the step with id playwright-cache (the "Cache Playwright browsers" step)
from actions/cache@v5 to actions/cache@<commit-sha> where <commit-sha> is the
full commit SHA for the actions/cache release you'd like to pin (obtain from the
actions/cache repository), leaving the rest of the step (path, key) unchanged.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b40fb540-5c99-41e2-9fc8-caba2d97a501

📥 Commits

Reviewing files that changed from the base of the PR and between eab7208 and 308ba04.

📒 Files selected for processing (5)
  • .github/workflows/build.yml
  • .github/workflows/fallow.yml
  • .github/workflows/lint.yml
  • .github/workflows/test.yml
  • .github/workflows/typecheck.yml

@ryota-murakami ryota-murakami merged commit 52820a8 into main Jun 13, 2026
11 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.

2 participants