💬
GitHub Actions で tfcmt を使って terraform plan の結果をコメントに貼り付ける
tfcmt を業務で使ってみたらめちゃくちゃ良かったので、 GitHub Actions で動かす例を備忘録として残しておきます。
検証環境
- tfcmt v3.4.1
- terraform v1.2.9
tfcmt とは?
tfcmt は terraform plan
や terraform apply
の結果を GitHub にコメントとして通知する CLI ツールです。
CI のログを見にいかなくとも GitHub のコメント上で結果を確認することができます。
且つ、見やすい形式でコメントしてくれるので素のログよりも結果が分かりやすいです。
詳しくは開発者の方が書いている紹介記事や公式ドキュメントをご参照ください。
GitHub Actions で tfcmt を実行するサンプルコード
こんな感じ。
push 時に関連する PR が存在する場合は PR にコメントが作成され、 PR が存在しない場合は Commit に対してコメントが作成されます。
また、 PR がマージされたときにも Merge Commit に対してではなく Merge された PR に対してコメントが作成されます。
.github/workflows/main.yml
name: terraform plan
on:
push:
pull_request:
jobs:
terraform_plan:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v3
- name: setup terraform
uses: hashicorp/setup-terraform@v2
with:
terraform_version: 1.2.9
- name: setup tfcmt
env:
TFCMT_VERSION: v3.4.1
run: |
wget "https://github.com/suzuki-shunsuke/tfcmt/releases/download/${TFCMT_VERSION}/tfcmt_linux_amd64.tar.gz" -O /tmp/tfcmt.tar.gz
tar xzf /tmp/tfcmt.tar.gz -C /tmp
mv /tmp/tfcmt /usr/local/bin
tfcmt --version
- run: terraform init
- name: terraform plan
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: tfcmt plan -patch -- terraform plan -no-color -input=false
- tfcmt に使用される
GITHUB_TOKEN
環境変数には自動的に作成されるGITHUB_TOKEN
シークレットを使えるため、自分でアクセストークンを発行する必要はありません。-
GITHUB_TOKEN
シークレットについての詳細はこちらをご参照ください。
-
- tfcmt 実行時に
-patch
オプションを設定して、既存のコメントがある場合は更新するようにしています。-
-path
オプションについての詳細はこちらをご参照ください。
-
実際に作成されるコメントはこんな感じです。
その他
tfcmt では設定ファイルを作成することでより細かい設定を行うことも可能です。
詳しくは下記ドキュメントをご参照ください。
また、 GitHub Actions で tfcmt を含めた様々なツールを利用したいい感じの Terraform Workflow を構築するための tfaction というアクションも公開されています。
詳しくは下記ドキュメントをご参照ください。
まとめ
めちゃくちゃ良いです。
Discussion
こんにちは。 tfcmt, tfaction を開発している者です。ご紹介いただきありがとうございます。
こちらに関して補足させてください。
tfcmt v3.4.0 以降では、 commit に関連した Pull Request を自動で取得し、 Commit ではなく Pull Request にコメントをするようになっているはずです。
ただし、まだ Pull Request が open されていないなどの理由で関連する Pull Request が存在しない場合は Commit にコメントをします。
また、 Pull Request の Merge Commit に対しても、 Merge Commit ではなく Merge された Pull Request にコメントをするはずです。
あとこれは宣伝ですが、 tfcmt などの CLI ツールのインストールには aqua というツールを使うと、 YAML で宣言的に管理できるようになり、 Renovate で自動 update が簡単に出来、 CI だけでなくローカルにもインストールできるといったメリットがあって便利なので、よければどうぞ。
ありがとうございます!
ご本人様に読んでいただけてめっちゃ嬉しいです!
おっしゃる通りです。
PR 作成・更新時には...
の更新時
の方に含めたつもりだったのですが、たしかに表現が不適切というかわかりづらかったですね。修正しました!
この挙動は知りませんでした、便利!
こちらも合わせて追記させていただきました。
存じ上げております!! ( tfaction ではどうやって tfcmt インストールするんだろうと思ってソース読み漁ったときに見つけてふむふむとなっておりました )
かなりイケてる感じがするので機会があれば触ってみようと思います、ありがとうございます!