1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub ActionsのNode.js 20非推奨警告に対応した話(Node.js 24移行)

1
Last updated at Posted at 2026-05-16

はじめに

GitHub Actions実行時に以下の警告が表示されるようになった。

Node.js 20 actions are deprecated.
Please update the following actions to use Node.js 24:
Actions will be forced to run on Node.js 24 by default starting June 2nd, 2026.

image.png

個人開発のCI/CD環境で対応した内容をまとめる。

なぜ警告が表示されるのか

GitHub ActionsのJavaScript製Actionは内部的にNode.jsで動作している。

uses: で呼び出しているActionは、単なる設定ファイルではなく内部的にはプログラムとして動作している。

steps:
  - name: Checkout repository
    uses: actions/checkout@v6

例えば actions/checkout はJavaScript製Actionであり、GitHub Runner上でNode.jsランタイムを利用して実行される。

JavaScript製Actionでは、action.yml 内で利用するNode.jsバージョンが指定されている。

古いActionでは、以下のように node20 が利用されていた。

■参考資料
例:actions/checkout@v4action.yml
ソースコード:actions/checkout@v4 action.yml

runs:
  using: node20

Node.js 24移行に伴い、最新バージョンでは以下のように node24 へ更新されている。

■参考資料

例:actions/checkout@v6action.yml
ソースコード:actions/checkout@v6 action.yml

runs:
  using: node24
  main: dist/index.js

GitHubの方針変更により、2026年6月以降はNode.js 24がデフォルトになる予定。

そのため、古いNode.jsランタイムを利用しているActionでは今回のような非推奨警告が表示される。

Node.js 24へ移行しないと何が困るのか

Node.js 20がすぐに利用できなくなるわけではない。ただしGitHub Actionsでは、2026年6月2日以降、JavaScript製Actionの実行ランタイムがNode.js 24へ順次移行される予定となっている。

また、GitHubは将来的にrunnerからNode.js 20を削除予定としているため、runs.using: node20 のActionは段階的な移行対応が必要となる。

上記のことから、以下の問題が発生する可能性を考える。

■問題点

  • 古いActionが正常動作しなくなる
  • workflow失敗の原因になる
  • サポート切れランタイム利用によるセキュリティリスク
  • CI/CD停止時の影響調査コスト増加
  • サードパーティAction利用時の互換性問題

特にCI/CDは「突然壊れる」と困るため、警告段階で対応しておくことが重要だと感じた。

サードパーティAction利用時の注意

サードパーティActionとは、GitHub公式(actions/*)以外の企業・団体・個人が提供しているActionを指す。

参考例:

Action 用途 提供元 備考
golangci/golangci-lint-action GoコードのLint実行 golangciチーム Go開発で広く利用される
appleboy/ssh-action SSH接続によるリモートサーバー操作 外部開発者 デプロイ処理などで利用される
slackapi/slack-github-action Slack通知 Slack社 CI/CD結果通知などで利用される

GitHub公式Actionは比較的早くNode.js 24対応されることが多いが、サードパーティActionは対応状況がActionごとに異なる。

そのため、Node.js 24移行時には、利用しているActionのメンテナンス状況や対応バージョン確認が必要となる。

対応内容

今回実施した対応は以下。

  1. 警告が出ているActionを最新版へ更新
  2. Node.js 24強制実行フラグを追加(Node.js 24で問題が発生するActionを事前検出)
  3. サードパーティActionを確認

更新したAction一覧

Action 用途 Before After
actions/checkout リポジトリ取得 v4 v6
actions/setup-go Go環境セットアップ v5 v6
golangci/golangci-lint-action Lint実行 v6 v8
actions/upload-artifact Artifactアップロード v4 v7
slackapi/slack-github-action Slack通知 v2 v3

実際の修正内容

before

- uses: actions/checkout@v4

- uses: actions/setup-go@v5

- uses: golangci/golangci-lint-action@v6

- uses: actions/upload-artifact@v4

- uses: slackapi/slack-github-action@2

after

- uses: actions/checkout@v6

- uses: actions/setup-go@v6

- uses: golangci/golangci-lint-action@v8

- uses: actions/upload-artifact@v7

- uses: slackapi/slack-github-action@3

また、workflow全体に以下を追加した。

env:
  FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 を設定することで、JavaScript製ActionをNode.js 24環境で実行できる。※指定しない場合はAction側のaction.ymlに書かれている Node.js バージョンで動く

GitHub側の切り替え前に互換性問題を把握できるため、事前確認用途として有効だった。

注意点

フラグを追加しても警告が消えない場合がある

以下のようなケースでは警告が残ることがあった。

  • サードパーティAction側が未対応
  • action.yml が node20 のままのActionを使用

そのため、動作上問題なくても警告を消すには利用しているAction自体の更新確認も必要だった。

DependabotでGitHub Actionsの更新を検知する

GitHub Actionsの uses: 更新は、Dependabotでも検知できる。

.github/dependabot.yml に以下を追加することで、GitHub Actionsで利用しているActionの新しいバージョンを定期的に確認し、更新がある場合はPull Requestを作成してくれる。

# GitHub Actions
- package-ecosystem: "github-actions"
  directory: "/"
  schedule:
    interval: "weekly"
  open-pull-requests-limit: 5

これにより、例えば以下のような更新を自動検知できる。

  • actions/checkout@v4actions/checkout@v6
  • actions/setup-go@v5actions/setup-go@v6
  • slackapi/slack-github-action@v2slackapi/slack-github-action@v3

ただし、Dependabotは更新PRを作成してくれるが、Node.js 24環境で問題なく動作するかまでは保証しない。

そのため、PR作成後はworkflowの実行結果を確認し、必要に応じてサードパーティActionのリリースノートや対応状況も確認する。

Major更新を通常運用から外すケースについて

Dependabot はデフォルトでは major 更新も Pull Request として作成する。

ただし、major 更新は破壊的変更を含む可能性があり、検証コストも高いため、通常運用では semver-major を除外しているケースも多い。

ignore:
  - dependency-name: "*"
    update-types:
      - "version-update:semver-major"

例えば、以下のような更新は major 更新に該当する。

  • actions/checkout@v4actions/checkout@v6
  • actions/setup-go@v5actions/setup-go@v6

そのため、Node.js 24移行のようなGitHub Actions runtime更新も、自動検知されず見逃されるケースがある。
Dependabot を利用している場合でも、定期的に GitHub Actions の警告や利用中Actionの更新状況を確認したい。

確認方法

実行したActions詳細画面から警告を確認できる。

■参考スクリーンショット
image.png

各自のCI/CD環境でも確認したいこと

  • 利用中Actionのバージョン確認
  • 非推奨警告の有無
  • サードパーティActionの更新状況
  • 置き換え候補の調査

まとめ

Node.js 24移行はworkflow修正だけでなく、利用しているAction側の対応状況確認も重要だった。
特にサードパーティActionを利用している場合は早めの確認をおすすめする。

おわりに

会社のworkflowでも同様の警告が出ていたため、段階的に移行確認を進めたい。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?