こんにちは、クラウド事業部の山路です。
今回は、GitHub Actionsで動くNode.jsのデフォルトバージョンが20から24へ更新されることに伴い、組織内のリポジトリやカスタムActionを対応させた際の作業ポイントをメモとして残しておきます。
きっかけ
GitHubの公式ブログでもアナウンスされている通り、GitHub ActionsのランナーにおけるNode.js 20のサポート終了と、Node.js 24への移行が進められています。当初は2026年6月2日までの対応が必要でしたが、期限が延長されて6月16日までとなりました。
直前になって慌てないよう、私の対応する案件でもいくつかのGitHub Actionsやワークフローのバージョンアップ対応を行いました。今回はその際に洗い出した作業対象と、対応のポイントについて整理します。
作業対象と対応のポイント
今回のバージョンアップに伴う作業対象は、大きく分けて以下の3つでした。
1. 組織内カスタマイズActionコードの対応
組織内で独自に開発・運用している、Node.js(TypeScript)ベースのカスタムActionが最初の対象でした。
- ローカル開発環境の更新とテスト: 開発環境のNode.jsバージョンを24に更新し、既存のビルドやユニットテストが問題なく動作するか確認します。
action.ymlの修正: カスタムActionを呼び出すための定義ファイルであるaction.ymlの修正が必要です。実行環境を指定するruns.usingの値をnode24へ書き換えます。
# action.yml name: 'test action' description: 'example' runs: using: 'node24' # ここを node20 から node24 に変更 main: 'dist/index.js'
2. Marketplaceなどの外部Actionsのバージョンアップ
多くのワークフローでは、自社で用意したActionsでなく、Marketplaceで公開されているActionsを使うことが多いかと思います。GitHub公式が提供する actions/checkout などのActionsも、Node.js 24で動作させるためにバージョンアップが必要です。
主要な公式Actionの多くはすでにNode.js 24への対応が完了しているため、基本的にはワークフロー内で指定しているActionのバージョン(タグ)を最新、または対応済みのバージョンへと更新すれば対応完了となります。
どのバージョンからNode.js 24に対応しているかはRelease Noteなどを見て確認しましょう。基本的には最新バージョンに更新するのが良いでしょう。
- 例:actions/checkout の場合はv5.0.0 または v6.0.0以上で対応しています。
3. 依存先Actionの更新が停滞している場合の対応
外部Actionsの中には、その内部でさらに別の外部Actionsを呼び出している(依存している)ものも存在します。
今回、私たちが利用していた外部Actionの中に、内部でNode.js 20の古いActionに依存しているものがありました。移行の期日が迫っても一向にそのActionのアップデート版がリリースされなかったため、今回は自前で同等の処理を行うShellScriptを作成し、リポジトリ内に配置して直接呼び出すという形に切り替えて対応しました。
利用する外部Actionsの更新が滞っていたりするとこういう事態も起こりうることが良く分かったので、該当の方は注意しておくとよさそうです。
その他:今回は対応しなかったが注意すべき観点
今回は私たちの環境では該当しなかったものの、プロジェクトによっては考慮が必要になりそうな観点を挙げておきます。
actions/github-script を利用している場合: ワークフロー内でインラインのJavaScriptを実行できる
actions/github-scriptを使っている場合、インラインスクリプトの実行基盤もNode.js 24となります。なのでスクリプトも修正が必要な場合があります。※actions/github-scriptのアップデートも忘れずに。runブロック内で直接nodeコマンドを実行している場合: こちらも上記と同様、スクリプトがNode.js 24の仕様や変更点(非推奨になったAPIなど)に依存していないか、影響確認が必要になります。ただしactions/setup-node でバージョンを明示的に宣言している場合はこの限りではないかもしれません。
まとめ
GitHub Actionsのアップデート対応は定期的に発生するイベントですが、サードパーティ製のActionに依存していると「移行期日が迫っているのにアップデートが来ない」といった今回のような落とし穴にハマることがあります。 事前に依存関係を整理し、場合によっては自前での代替手段を持っておくといった事前の準備が大切だと感じました。