Actions&Terraform

GithubActionsで非推奨になったsave-stateとset-outputを修正する

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 日以降はエラーになるので注意が必要。

多くのリポジトリやワークフローを抱えているプロジェクトでは、メンバーで分担しながら対応したいですよね。

修正方法

GitHub のページのサンプルにある通り、$GITHUB_STATE や $GITHUB_OUTPUT の環境ファイル(environment files)に標準出力させます。

save-state は $GITHUB_STATE に。

save-state

echo “::save-state name={name}::{value}”
 ↓
echo “{name}={value}” >> $GITHUB_STATE

set-output は $GITHUB_OUTPUT に。

set-output

echo “::set-output name={name}::{value}”
 ↓
echo “{name}={value}” >> $GITHUB_OUTPUT

確認方法

書き換えたらワークフローを実行して、警告が消えているか確認してみましょう。

単純に、以下の文字列を削除して、{name}::{value} となっていた箇所をイコール(=)で繋ぎ、環境ファイルにリダイレクトするだけですね。

::save-state name=
::set-output name=

手作業だと単調な作業でミスりそうなので、量が多い場合は正規表現などで一括置換が無難でしょう。

差分は Pull Request で要チェックということで。