GitHub Actionsランナーに同梱されるNode20は、2026年9月23日に削除される予定です。9月16日時点で残り1週間。古いJavaScript Actionや互換性回避設定を使っている環境は、期限前の検証が必要です。

この期限は2025年9月19日に公開された非推奨化告知の、2026年8月25日更新版に記載されています。新しい発表ではなく、迫る移行期限を踏まえた実務ガイドです。

GITHUB ACTIONS / MIGRATION

アプリのNode更新だけでは完了しない

9月23日Node20削除予定
Node24Action実行の既定
3層Action/アプリ/Runner
## 3行で分かる移行 - JavaScript Actionは6月16日からNode24が既定になり、Node20へ戻す回避設定は削除後に使えなくなります。 - `actions/setup-node`で指定するアプリ用Nodeと、Actionそのものを動かすNodeは別です。 - macOS 13.4以下やARM32のセルフホステッド環境は、Node24の対応条件も確認してください。 ## 以前のランナー記事との違い 先日の[セルフホステッドランナー更新期限の記事](/github-actions-self-hosted-runner-brownout-2026)は、ランナー本体の最低版と30日以内の追随要件を扱いました。今回は、そのランナーがJavaScript Actionを起動する際のNodeランタイム削除です。両方の条件を満たす必要があります。
設定・管理先確認するもの
JavaScript Actionaction.yml → runs.usingNode24宣言、依存ライブラリ、実行互換性
アプリのNodesetup-node → node-versionアプリのビルド・テスト対象版
ランナー本体RunnerソフトとOS更新期限、OS・CPUアーキテクチャ対応
アプリのNodeを24にしても、依存Actionの`runs.using`は変わりません。逆にActionがNode24へ移行しても、アプリ側の実行版は別途指定できます。 ## まず棚卸しする ```bash # 自作Actionと回避設定を探す rg -n 'node20|ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION|FORCE_JAVASCRIPT_ACTIONS_TO_NODE24' \ .github action.yml action.yaml # 利用するActionを列挙 rg -n 'uses:' .github/workflows ``` 存在しないファイルのエラーは対象パスを調整してください。外部Actionは、実際に参照しているタグまたはコミットの`action.yml`を確認します。最新ブランチだけを見ると、ワークフローで固定した古い版を見落とします。 ## 自作JavaScript Actionの更新 ```yaml name: internal-check description: Validate internal rules runs: using: node24 main: dist/index.js ``` 宣言を書き換えるだけでは不十分です。依存パッケージを確認し、配布用`dist`を再生成して、実際のGitHub Actions上で検証します。ネットワーク、証明書、プロキシ、ファイル操作、ネイティブ依存は特に重点確認します。 Composite ActionやDocker Actionは`runs.using: node20`のJavaScript Actionとは構造が異なります。ただし内部で呼ぶJavaScript Actionや、コンテナ内のNode依存は別途棚卸しが必要です。 ## 外部Actionを安全に更新する 1. リリースノートでNode24対応とランナー最低版を確認する。 2. 検証ブランチで対応版へ更新する。 3. 成功パスだけでなく、失敗、キャンセル、後処理を試す。 4. 権限や入力値の変更をレビューする。 5. 本番ではレビュー済みコミットSHAで固定する運用も検討する。 `@vN`を更新するだけで別の破壊的変更が入る場合があります。メジャー番号、ランタイム対応、Runner要件を分けて評価してください。 ## 互換性回避設定を残さない 公式告知の`ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true`は、Node20へ戻す一時的な回避策です。9月23日の削除後まで動作を保証する設定ではありません。 ```yaml # 検証用。Node24が既定なので、恒久的な移行策ではありません。 env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true ``` 回避フラグがなくても正常に動く状態を合格条件にしてください。Node24は既定になっているため、上のフラグを付けるだけで未対応Actionや古いOSが修復されるわけではありません。 ## OS・アーキテクチャの注意点 GitHubの公式告知は、Node24がmacOS 13.4以下と互換性がなく、ARM32の公式サポートもないと説明しています。古いMacや32ビットARMのセルフホステッドランナーは、ランナーアプリ更新だけで解決しない可能性があります。 OS更新や64ビット対応機への移行を検討し、署名、Docker、VPN、社内証明書などの運用依存も試験してください。GitHub-hosted環境へ移す場合は、社内ネットワークへの接続方式と秘密情報の権限を見直します。 ## 開発・保守への影響 期限当日に重要なリリースが止まると、復旧のために未検証のAction更新や権限拡大を行いがちです。移行を通常の変更管理として先に実施すれば、緊急対応のリスクを減らせます。 特に、社内共通Actionは多数のリポジトリへ影響します。呼び出し元の台帳、対応版、移行期限、検証結果を共有し、利用部門ごとに進捗を追うことが重要です。 ## 期限前チェックリスト - [ ] 自作・外部・再利用ワークフローの全Actionを確認した - [ ] 固定コミットの`runs.using`を確認した - [ ] 配布コードを再生成し、依存パッケージを検証した - [ ] Node20回避設定なしで動くことを確認した - [ ] macOS・ARM32・ランナー最低版を確認した - [ ] 認証、プロキシ、成果物、キャンセル後処理を試した - [ ] 共通Actionの利用部門へ対応版を案内した ## リスクと今後注目すべき点 削除日は公式予定であり、過去に更新されています。作業時は告知の最新編集注記を再確認してください。今回の移行はアプリ用Node20の一律削除ではありませんが、アプリ側のEOL対応を免除するものでもありません。 今後はランナー、Actionの実行ランタイム、アプリのランタイムを別々の台帳で管理し、更新を定期的に検証する仕組みが必要です。単一の「Nodeバージョン」項目でCI全体を管理する設計は避けましょう。 ## 参照元 - [GitHub Changelog:Deprecation of Node 20 on GitHub Actions runners](https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/) - [GitHub Docs:Metadata syntax for GitHub Actions](https://docs.github.com/en/actions/reference/workflows-and-actions/metadata-syntax) - [GitHub:actions/setup-node](https://github.com/actions/setup-node) 最終確認日:2026年9月16日

Previous Post Next Post