GitHub Actionsの「set-output is deprecated」警告を修正する方法(save-state対応も)
Github Actions で作ったワークフローを実行していて、いつの間にか出力されるようになった警告。
Warning: The set-output command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
処理は正常に完了していても、実行ログを確認したときに警告が出ていると気持ち悪いですよね。
そこで、今回は Github Actions で非推奨になった save-state と set-output を推奨されている形式に書き換えていきます。
非推奨になった内容
冒頭でも書いた通り、save-state と set-output のコマンドが非推奨になりました。
GitHub のサイトでは以下の専用ページが用意されています。
当初は「2023 年 5 月 31 日までは警告のみ、6 月 1 日以降はエラーになる」と予定がアナウンスされていました。
(2023年5月25日 追記)
「GitHub Actions: Deprecating save-state and set-output commands」の中で、この話題について取り消されている感じなので、今後の情報を追っておきたいですね。やっぱ、サードパーティー製の actions のこともあるので、影響範囲が大きすぎますもんね。
(その後の決着 / 2023年7月24日)
GitHub は公式の続報で、これらのコマンドの削除を延期すると正式に発表しました。利用が依然として多いことが理由です。現在も save-state / set-output を使ったワークフローはこれまで通り動作しますが、アノテーションに非推奨の警告は表示され続けます。GitHub は引き続き環境ファイル($GITHUB_OUTPUT / $GITHUB_STATE)への移行を推奨しているので、新規作成や改修のタイミングで直しておくのが安心ですね。
多くのリポジトリやワークフローを抱えているプロジェクトでは、メンバーで分担しながら対応したいですよね。
修正方法
GitHub のページのサンプルにある通り、$GITHUB_STATE や $GITHUB_OUTPUT の環境ファイル(environment files)に標準出力させます。
save-state は $GITHUB_STATE に。
echo “::save-state name={name}::{value}”
↓
echo “{name}={value}” >> $GITHUB_STATE
set-output は $GITHUB_OUTPUT に。
echo “::set-output name={name}::{value}”
↓
echo “{name}={value}” >> $GITHUB_OUTPUT
確認方法
書き換えたらワークフローを実行して、警告が消えているか確認してみましょう。
単純に、以下の文字列を削除して、{name}::{value} となっていた箇所をイコール(=)で繋ぎ、環境ファイルにリダイレクトするだけですね。
::save-state name=
::set-output name=
手作業だと単調な作業でミスりそうなので、量が多い場合は正規表現などで一括置換が無難でしょう。
差分は Pull Request で要チェックということで。
同じく GitHub Actions のログに出る警告を消したい方は、actions/setup-goで「Restore cache failed」の警告が出る時の対処法 もあわせてどうぞ。
参考(出典)
- GitHub Actions: Deprecating save-state and set-output commands(2022-10-11、GitHub Changelog)
- GitHub Actions – Update on save-state and set-output commands(2023-07-24、GitHub Changelog)
