くりにっき

フルスタックキュアエンジニアです

GitHub Actionsで特定の条件の時だけenvironmentを設定したい

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') || '' }}

github.com

分かりづらいんですが terraform apply 時のみDeploymentsに通知されています。

解説

environment に空文字を渡してもエラーにならず、非空文字が渡された時のみそれが environment としてDeploymentsに通知される」という仕様を利用しています。*3

実はGitHub Actionsに三項演算子は無いのですがそれっぽいものは実装することができます。

ググれば色々ありますが自分は下記を参考にしました。

qiita.com

*1:後者はトピックブランチでの手動applyを想定

*2:https://docs.github.com/ja/rest/deployments/deployments?apiVersion=2022-11-28

*3:将来的に挙動が変わる可能性はあります