
GitHub Actions で terraform plan / terraform apply を実行するときに出力結果をイイ感じにプルリクエストにコメントしたいという場面があった💬 自前でゴニョゴニョと実装するのではなく tfcmt を試してみたらとても便利だったので,検証ログも兼ねてまとめておこうと思う❗️
動作確認
イイ感じ \( 'ω')/
plan 結果

apply 結果

GitHub Actions ワークフロー
👾 .github/workflows/terraform-plan.yml
terraform plan を実行するときに tfcmt plan --patch -- terraform plan のように tfcmt plan コマンドを組み合わせれば OK👌 あと --patch オプションを指定すると既存のコメントを更新できて,プルリクエストのコメントが無駄に増えないように制御できるのも良かった.
name: Terraform Plan on: pull_request: branches: - main permissions: id-token: write contents: read pull-requests: write issues: write jobs: plan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::000000000000:role/xxxxx aws-region: ap-northeast-1 - uses: hashicorp/setup-terraform@v3 with: terraform_version: 1.10.3 - name: Setup tfcmt env: GH_TOKEN: ${{ github.token }} run: | gh release download -R suzuki-shunsuke/tfcmt v4.14.4 -p tfcmt_linux_amd64.tar.gz tar -xzf tfcmt_linux_amd64.tar.gz sudo mv tfcmt /usr/local/bin/ tfcmt --version - name: Terraform Init run: terraform init - name: Terraform Plan env: GITHUB_TOKEN: ${{ github.token }} run: tfcmt plan --patch -- terraform plan
👾 .github/workflows/terraform-apply.yml
terraform apply を実行するときに tfcmt apply -- terraform apply -auto-approve のように tfcmt apply コマンドを組み合わせれば OK👌
name: Terraform Apply on: pull_request: types: - closed branches: - main permissions: id-token: write contents: read pull-requests: write issues: write jobs: apply: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::000000000000:role/xxx aws-region: ap-northeast-1 - uses: hashicorp/setup-terraform@v3 with: terraform_version: 1.10.3 - name: Setup tfcmt env: GH_TOKEN: ${{ github.token }} run: | gh release download -R suzuki-shunsuke/tfcmt v4.14.4 -p tfcmt_linux_amd64.tar.gz tar -xzf tfcmt_linux_amd64.tar.gz sudo mv tfcmt /usr/local/bin/ tfcmt --version - name: Terraform Init run: terraform init - name: Terraform Apply env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: tfcmt apply -- terraform apply -auto-approve
ポイント
issues: write
tfcmt では自動的に add-or-update / no-changes などのラベル作ってプルリクエストに紐付けてくれる🏷️ 最初に実行したときに You do not have permission to create labels on this repository. というエラーが出て,issues: write 権限を追加したら解決した👌
add a label add-or-update: POST https://api.github.com/repos/kakakakakku/sandbox-terraform-github-actions/issues/1/labels: 403 You do not have permission to create labels on this repository. [{Resource:Repository Field:label Code:unauthorized Message:}]
tfcmt のセットアップ
tfcmt をシュッとセットアップするアクションがあったら使いたいな〜と思ったけど,公式ではなさそうだった(actions-setup-tfcmt というのはあるようだった).よって,今回は gh release download コマンドを使って tar.gz から展開することにした.
gh release download -R suzuki-shunsuke/tfcmt v4.14.4 -p tfcmt_linux_amd64.tar.gz tar -xzf tfcmt_linux_amd64.tar.gz sudo mv tfcmt /usr/local/bin/
ドキュメントを読むと YAML で CLI ツールセットを管理する aqua を使う案もあったけど今回は見送った.