タダです.
GitHub Actions の Reusable workflows を使って,terraform plan
をすることがあったのですが,その際に GitHub Actions に設定した Secrets を渡す必要がありました.他にも Reusable workflows を使う Actions はあるため,Secrets が渡されたときはその値をセットし,それ以外はスキップするよう処理を書きました.この記事では備忘録としてその内容をまとめます.
出来上がった GitHub Actions の定義ファイル
まず呼び出し元の定義ファイルは次のように書きました.Reusable workflows の with で Secrets を渡すようにしています.
terraform_plan: uses: "./.github/workflows/reusable_workflow_test.yml" with: TF_VAR_hoge_api_key: "${{ secrets.hoge_api_key }}"
次に,呼び出される側の定義ファイルは次のように書きました.secrets
セクションで呼び出し元から渡された値を受け取ります.その次に,steps
の中で渡された値をenv
に入れて if で変数に値がセットされていれば GITHUB_ENV
に書き出し,なければ何もしないようにしました.
secrets: TF_VAR_hoge_api_key: required: false ~中略~ - if: ${{ env.TF_VAR_hoge_api_key != null }} env: TF_VAR_hoge_api_key: ${{ secrets.TF_VAR_hoge_api_key }} run: echo "TF_VAR_hoge_api_key=${{ env.TF_VAR_hoge_api_key }}" >> $GITHUB_ENV
こうすることで Secrets を渡されたときだけ処理が動き,それ以外はスキップされるようにすることができました.
まとめ
Reusable workflows に Secrets を渡して必要な Actions からの呼び出しだけ Secrets を環境変数にセットすることができました.検証で結構時間を喰ってしまったのですが,自分が経験したことない知見を詰めてよかったです.