tl;dr;
environment
を三項演算子でいい感じにする
モチベーション
TerraformのワークフローをGitHub Actionsで動かしてるんだけど、terraform apply
した時(具体的にはmainブランチか手動でのbuild実行時 *1 )のみ environment
をセットしてDeployments *2に通知したかった。( terraform plan
(Terraformのdry run)ではDeploymentsには通知したくない)
実装例
こんな感じ。
environment: ${{ ((github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch') && 'terraform-apply') || '' }}
分かりづらいんですが terraform apply
時のみDeploymentsに通知されています。
解説
「 environment
に空文字を渡してもエラーにならず、非空文字が渡された時のみそれが environment
としてDeploymentsに通知される」という仕様を利用しています。*3
実はGitHub Actionsに三項演算子は無いのですがそれっぽいものは実装することができます。
ググれば色々ありますが自分は下記を参考にしました。
*1:後者はトピックブランチでの手動applyを想定
*2:https://docs.github.com/ja/rest/deployments/deployments?apiVersion=2022-11-28
*3:将来的に挙動が変わる可能性はあります