Skip to content

ci: move the deprecated node20 actions to their current majors #36

Description

@smileygames

目的

CI/CD が使う actions/* を Node.js 20 ランタイムから外し、deprecation 警告を消す。

前提

現況

actions/checkout@v4 / actions/setup-node@v4 / actions/cache@v4 はいずれも Node.js 20 を対象としており、GitHub 側が強制的に Node.js 24 で走らせている。ジョブは通るが、毎回 annotation が出る。

Node.js 20 is deprecated. The following actions target Node.js 20 but are being
forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4

強制実行はこちらが版を上げるまでの猶予であって、恒久的な互換保証ではない。

版の対応

action 現在 移行先
actions/checkout v4 v7
actions/setup-node v4 v7
actions/cache v4 v6

dtolnay/rust-toolchain@stable は版ではなくブランチ参照であり対象外。tauri-apps/tauri-action@v0 は Node の deprecation とは別軸のため #37 に分ける。

検証済みの前提

破壊的変更のうち、この repo に当たりうるものは 3 つ。いずれも影響しないことを確認した。

  • setup-node v5 の自動キャッシュ(v6 で npm のみに限定)。package.jsonpackageManager フィールドが有効な値で存在するときに作動する。この repo には当該フィールドが無いため作動せず、node_modules を明示的に持つ既存の actions/cache ステップと衝突しない。
  • checkout v7 の fork PR ブロックpull_request_targetworkflow_run が対象。ci.yml は push / pull_request、cd.yml は release で発火するため当たらない。
  • runner の最低版要件 2.327.1(Node 24 化に伴うもの)。windows-latest / ubuntu-latest はいずれも GitHub ホストであり、self-hosted runner は使っていない。

制約

  • 版を上げるだけとし、ステップの構成・キャッシュキー・node-version は変えない。同時に動かすと、CI が落ちたとき原因が版なのか構成なのか分からなくなる。
  • ci.yml と cd.yml を同じ PR で上げる。同じ action の版が二つのワークフローで食い違う状態を残さない。
  • cd.yml は release 発火のため PR の CI では実行されない。検証は ci.yml の実走と、cd.yml の差分が ci.yml と同一の版に揃っていることの確認による。

対象ファイル

  • .github/workflows/ci.yml
  • .github/workflows/cd.yml

完了条件

  • 上の表の 3 つが移行先の版になっている。
  • CI が pass し、Node.js 20 の deprecation 警告が annotation から消えている。
  • cd.yml の actions/* が ci.yml と同じ版に揃っている。

Metadata

Metadata

Assignees

Labels

enhancement新機能・改善要望ready本文が実装開始できる形まで収束している状態。ただし更新は継続可能

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions