GitHub Actions:「Node.js 20 is deprecated」の警告
ジョブの中の1つ以上のアクションが、実行環境に Node 20 を指定しています。GitHub は2026年9月23日にランナーから Node 20 を外したので、ランナーはそれを Node 24 で動かし、この警告を残しました(「Node.js 20 は非推奨。次のアクションは Node.js 20 向けだが、Node.js 24 で強制的に動かしている」)。警告のせいでジョブが失敗したわけではありません。消すには、名前が出ている各アクションを Node 24 向けのバージョンに上げます。
見え方
2026年10月30日の公開の実行(ランナー 2.338.2)での注釈です:
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
- 一覧には、ワークフローに書いたとおりの形でアクションが並びます。
actions/checkout@v4のようなタグか、コミットの SHA で固定していればその SHA です。 - 2026年6月16日より前は、同じアクションがまだ Node 20 で動いていて、警告は「Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected」でした。
いま何が変わるか
- 元には戻せません。GitHub の2026年9月23日の変更履歴には、ランナーは JavaScript のアクションに Node 24 を使うようになり、一時的に Node 20 へ戻す
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSIONはもう使えない、とあります。FORCE_JAVASCRIPT_ACTIONS_TO_NODE24も、もう要りません。 - 警告はアクションの実行環境の話で、プロジェクトのビルドに使う Node の話ではありません。
actions/setup-nodeにnode-version: 20と書けば、自分のステップ用には今も Node 20 が入ります(最後のリリースは 20.20.2。Node 20 は2026年4月にサポートが終わっています)。Ubuntu のイメージに最初から入っているのは Node 22 と 24 だけです。 - macOS 13.4 以前や 32ビットの ARM のセルフホストランナーは、Node 24 が動かないので、もうサポートされません。
そのバージョンを決めている行を探す
- リポジトリのアクションの参照をすべて並べます:
grep -rhoE 'uses: *[^ ]+@[^ ]+' .github/ | sort | uniq -c | sort -rn
- SHA で固定しているなら、どのタグかを調べ、どのバージョンでも実行環境を確かめられます:
gh api "repos/actions/checkout/tags?per_page=100" --jq '.[] | select(.commit.sha | startswith("08eba0b2")) | .name' gh api "repos/actions/cache/contents/action.yml?ref=v4" --jq .content | base64 -d | grep using - 警告に出たバージョンがリポジトリのどのファイルにも無いなら、呼び出している先から来ています。別のリポジトリの再利用ワークフローは自分の固定を持つので、動かせるのはそのリポジトリだけです(Morrison-Lab/gha #1405)。composite のアクションが古いアクションを包んでいることもあります。
codecov/codecov-actionの v5 は中で Node 20 向けのactions/github-scriptv7.0.1 を動かし、v6 は github-script v8 を動かします。 - メジャーの浮動タグが最新のリリースを指すとは限りません。
pnpm/action-setup@v4は今も Node 20 のビルドを指していますが、v4.4.0 は Node 24 で動きます。
よく名前が出るアクションの、Node 24 対応の最初のバージョン
2026年11月3日に各アクションのタグの action.yml を見た結果です。10月1日以降の公開の issue とプルリクエストのうち、この警告と一緒にそのアクションの名前が出る件数の多い順に並べています:
actions/checkout:v5(最新 v7.0.1)actions/setup-node:v5(最新 v7.1.0)actions/upload-artifact:v6(最新 v7.0.2)actions/setup-python:v6(最新 v7.1.0)actions/cache:v5(最新 v6.1.0)actions/download-artifact:v7(最新 v8.0.2)actions/github-script:v8(最新 v9.0.0)gradle/actions/setup-gradle:v5(最新 v6.4.1)pnpm/action-setup:v5、またはちょうど v4.4.0(最新 v6.1.0)codecov/codecov-action:v6(最新 v7.1.1)actions/deploy-pages:v5、actions/configure-pages:v6、actions/upload-pages-artifact:v5(中で upload-artifact v7 を使う)actions/setup-java:v5、actions/setup-go:v6、actions/setup-dotnet:v5docker/build-push-action:v7、docker/setup-buildx-action・docker/login-action・docker/setup-qemu-action:v4、docker/metadata-action:v6softprops/action-gh-release:v3、actions/labeler:v6、github/codeql-action:v4、peter-evans/create-pull-request:v8、aws-actions/configure-aws-credentials:v6、actions/stale:v10
メジャーバージョンが変わると入力や既定値が変わることがあるので、上げる前にリリースノートを読みます。たとえば actions/download-artifact の v8 は、ハッシュが合わないと既定で失敗します(v7 は警告だけでした)。
これからの更新をプルリクエストで受け取るには、Dependabot にワークフローのファイルを見てもらいます:
# .github/dependabot.yml
version: 2
updates:
- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
ジョブが失敗していたら
Node 20 向けのアクションのほとんどは Node 24 でもそのまま動くので、ジョブが赤いならたいてい別の原因があります。この警告ではなく、エラーの注釈を見ます。10月には、強制された実行環境を疑って Node 24 向けのリリースに上げたプロジェクトが2つありました。actions/labeler@v4 が「Parameter token or opts.auth is required」で失敗した例(semantic-fleet #105)と、DeterminateSystems/magic-nix-cache-action@v8 の後処理のステップが、ジョブの本来の作業が通ったあとで落ちた例(some-ui #2362)です。
JavaScript のアクションを公開している側なら、action.yml の runs.using を node24 にして新しいリリースを出します。メジャーのタグに従う利用者に届くよう、できれば新しいメジャーバージョンにします。
失敗したジョブを IntelliJ IDEA から見るなら
Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップと一緒に IDE のツールウィンドウに並べ、いまのブランチの実行はステータスバーに出ます。読むのは無料、失敗したジョブの再実行・キャンセル・ワークフローの実行・デプロイのレビューは Pro(月 US$1.50・30日の無料試用つき)です。
GitHub と GitHub Actions は GitHub, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標、Node.js は OpenJS Foundation の商標です。このページは GitHub, Inc.・OpenJS Foundation・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:「Unable to resolve action」 · ubuntu-latest の Ubuntu 26.04 への移行 · 廃止された macos-14 のラベル · 「Resource not accessible by integration」 · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English