Azure Pipelines の「is dependent on a Node version (10) that is end-of-life」:Node.js 6・10・16 は2026年11月24日にエージェントから外される
JavaScript で書かれた Azure Pipelines のタスクは、エージェントに入っている Node.js のランナーで動き、どのランナーを使えるかはタスクごとの task.json に書いてあります。Microsoft の Node.js ランナーのページ によれば、Node.js 6・10・16 は2026年11月24日にエージェントから外され、それ以降、これらを必要とするタスクは動かないことがあります。それまでは、エージェントはそのタスクを動かして警告を出すだけです。2026年10月25日と26日には、Node.js 24 のハンドラーを求める issue が多くの Marketplace の拡張機能に一斉に立てられました(azure-pipelines-terraform #384・jfrog-azure-devops-extension #675 など)。
11月24日にどのプルリクエストのビルドが落ちるかを見るなら:JetBrains IDE のプラグイン Azure DevOps Pull Requests は、落ちたビルドのポリシーを、IDE の中でプルリクエストの横に「満たしていない」と出します。JetBrains Marketplace で入れる
見え方
サポートの終わったランナーを宣言しているタスクでは、エージェントが次のような警告を出します(エージェントの文字列そのままで、山かっこのところにタスクの名前と版が入ります)。
Task '<name>' version <n> (<name>@<n>) is dependent on a Node version (10) that is end-of-life. Contact the extension owner for an updated version of the task. Task maintainers should review Node upgrade guidance: https://aka.ms/node-runner-guidance
Task ... relies on an unsupported version of Node.js. Unsupported Node versions (6, 10, and 16) are being retired, and any pipelines using tasks dependent on these versions will begin to fail.
パイプラインはまだ通るので、ステップの多い実行では警告を見落としがちです。タスクが宣言するランナーは task.json の execution の節にあり、Node が Node.js 6、続いて Node10・Node16・Node20_1・Node24 です。古いものと並べて Node20_1 か Node24 も書いてあるタスクは影響を受けません。エージェントは持っているハンドラーのうちいちばん新しいものを選ぶからです。
11月24日より前に、影響するパイプラインを探す
Microsoft は、取り外しを前もって試せる組織の設定を用意しています。
- Organization settings → Pipelines → Settings を開きます。
- Task restrictions の Restrict out of support Node.js versions in pipeline tasks をオンにします。
- パイプラインを動かして、警告を読みます。
設定がオンだと、Node.js 6・10・16 を宣言するタスクにはそのランナーが渡されず、エージェントは Node.js 24(なければ Node.js 20)で動かし、そのタスクは「may fail or work unexpectedly」とログに出します。新しいランナーがなければ、そのタスクは失敗します。Microsoft がホストするエージェントにもセルフホストのエージェントにも、コンテナジョブの中のタスクにも効き、セルフホストのエージェントは 4.278.0 以降が要ります。タスクを直すあいだ設定をオフに戻してもかまいませんが、それも11月24日までです。この設定は Azure DevOps Server にはありません。
script: node build.js のように Node.js でスクリプトを動かすだけのステップは影響を受けません。外されるのはタスクが宣言するランナーで、ビルドの中で使う Node.js ではありません。
タスクの種類ごとの直し方
- 組み込みのタスク(
NuGetCommand@2・AzureCLI@2など):Microsoft の FAQ のとおり、そのタスクのいちばん新しいメジャーバージョンに上げます。 - Marketplace のタスク:拡張機能の新しい版を探すか、公開者に頼みます。何年も更新されていない拡張機能なら、同じことをする組み込みのタスクかスクリプトのステップに置き換えます。
- 自作のタスク:Microsoft の Node.js 24 への移行の手引き に沿って、
task.jsonにNode24のハンドラーを足し、依存を上げて試します。手引きには、Node24 だけを書くなら、Node24 のハンドラーを持つ最初のエージェント 4.265.1 をminimumAgentVersionに書くようにともあります。
期限までにタスクを直せないとき
Microsoft は、主にセルフホストのエージェント向けに、古いランナーを残す方法を挙げています。ランナーをエージェントに自分で入れる、必要なパイプラインに NodeTaskRunnerInstaller@0 のステップを足す、Node.js 6 と 10 をまだ含む vsts-agent のパッケージでエージェントを入れる、のどれかです(pipelines-agent のパッケージには含まれず、Node.js 16 はどちらにも含まれません)。サポートの終わったランタイムを残すのはセキュリティと互換性の危険があると Microsoft のページにもあるので、時間を稼ぐためだけに使います。
見分け方
- 「A supported task execution handler was not found. The task does not carry an implementation that is compatible with your current operating system」:そのタスクには、この OS 向けのハンドラーがそもそもありません。よくあるのは、Windows 専用の PowerShell のタスクを Linux のエージェントで動かしたときです。Node.js の版の話ではありません。
- パイプラインを変えずに壊れたほかの変更:エージェント 5.279.0 からは コンテナジョブにホストの Docker のソケットが渡されない、Ubuntu 26.04 のイメージでは /home/vsts の下のパスが失敗する。
IntelliJ IDEA と Rider でのビルド検証
Azure DevOps Pull Requests は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。プルリクエストを、ブランチ ポリシーを平易な文にして IDE のツールウィンドウに並べるので、11月24日に落ち始めたビルドのポリシーは、プルリクエストの横に「満たしていない」と出ます。Pro では、失敗したビルドや期限切れのビルドに再実行のリンクが出て、もう一度キューに入れられます。レビューの受信箱とブランチ ポリシーは無料、投票・コメント・完了・ビルドポリシーの再実行・プルリクの作成は Pro(月 US$1・30日間の無料試用つき)です。画面は日本語です。
Azure DevOps・Azure Pipelines は Microsoft Corporation の商標、Node.js は OpenJS Foundation の商標、IntelliJ IDEA と Rider は JetBrains s.r.o. の商標です。このページは Microsoft・OpenJS Foundation・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:エージェント 5.279.0 からのコンテナジョブの「Cannot connect to the Docker daemon」 · ビルド検証:期限切れのビルドと、プルリクのビルドが動かない理由 · English