目的
CI/CD が使う actions/* を Node.js 20 ランタイムから外し、deprecation 警告を消す。
前提
現況
actions/checkout@v4 / actions/setup-node@v4 / actions/cache@v4 はいずれも Node.js 20 を対象としており、GitHub 側が強制的に Node.js 24 で走らせている。ジョブは通るが、毎回 annotation が出る。
Node.js 20 is deprecated. The following actions target Node.js 20 but are being
forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4
強制実行はこちらが版を上げるまでの猶予であって、恒久的な互換保証ではない。
版の対応
| action |
現在 |
移行先 |
actions/checkout |
v4 |
v7 |
actions/setup-node |
v4 |
v7 |
actions/cache |
v4 |
v6 |
dtolnay/rust-toolchain@stable は版ではなくブランチ参照であり対象外。tauri-apps/tauri-action@v0 は Node の deprecation とは別軸のため #37 に分ける。
検証済みの前提
破壊的変更のうち、この repo に当たりうるものは 3 つ。いずれも影響しないことを確認した。
setup-node v5 の自動キャッシュ(v6 で npm のみに限定)。package.json に packageManager フィールドが有効な値で存在するときに作動する。この repo には当該フィールドが無いため作動せず、node_modules を明示的に持つ既存の actions/cache ステップと衝突しない。
checkout v7 の fork PR ブロック。pull_request_target と workflow_run が対象。ci.yml は push / pull_request、cd.yml は release で発火するため当たらない。
- runner の最低版要件
2.327.1(Node 24 化に伴うもの)。windows-latest / ubuntu-latest はいずれも GitHub ホストであり、self-hosted runner は使っていない。
制約
- 版を上げるだけとし、ステップの構成・キャッシュキー・
node-version は変えない。同時に動かすと、CI が落ちたとき原因が版なのか構成なのか分からなくなる。
- ci.yml と cd.yml を同じ PR で上げる。同じ action の版が二つのワークフローで食い違う状態を残さない。
- cd.yml は release 発火のため PR の CI では実行されない。検証は ci.yml の実走と、cd.yml の差分が ci.yml と同一の版に揃っていることの確認による。
対象ファイル
.github/workflows/ci.yml
.github/workflows/cd.yml
完了条件
- 上の表の 3 つが移行先の版になっている。
- CI が pass し、Node.js 20 の deprecation 警告が annotation から消えている。
- cd.yml の
actions/* が ci.yml と同じ版に揃っている。
目的
CI/CD が使う
actions/*を Node.js 20 ランタイムから外し、deprecation 警告を消す。前提
現況
actions/checkout@v4/actions/setup-node@v4/actions/cache@v4はいずれも Node.js 20 を対象としており、GitHub 側が強制的に Node.js 24 で走らせている。ジョブは通るが、毎回 annotation が出る。強制実行はこちらが版を上げるまでの猶予であって、恒久的な互換保証ではない。
版の対応
actions/checkoutv4v7actions/setup-nodev4v7actions/cachev4v6dtolnay/rust-toolchain@stableは版ではなくブランチ参照であり対象外。tauri-apps/tauri-action@v0は Node の deprecation とは別軸のため #37 に分ける。検証済みの前提
破壊的変更のうち、この repo に当たりうるものは 3 つ。いずれも影響しないことを確認した。
setup-nodev5 の自動キャッシュ(v6 で npm のみに限定)。package.jsonにpackageManagerフィールドが有効な値で存在するときに作動する。この repo には当該フィールドが無いため作動せず、node_modulesを明示的に持つ既存のactions/cacheステップと衝突しない。checkoutv7 の fork PR ブロック。pull_request_targetとworkflow_runが対象。ci.yml はpush/pull_request、cd.yml はreleaseで発火するため当たらない。2.327.1(Node 24 化に伴うもの)。windows-latest/ubuntu-latestはいずれも GitHub ホストであり、self-hosted runner は使っていない。制約
node-versionは変えない。同時に動かすと、CI が落ちたとき原因が版なのか構成なのか分からなくなる。対象ファイル
.github/workflows/ci.yml.github/workflows/cd.yml完了条件
actions/*が ci.yml と同じ版に揃っている。