🥟
tfcmtを使ったらQuality of PRが上がった話
はじめに
Terraformでインフラを構築している場合、applyする前のコードレビューってどうしてますか?
従来私の現場では、プルリクを作成しコメントに手元のplan結果を貼り付けていました。
しかし、これが地味にめんどくさい...
ってことで、Github ActionsでPR作成したタイミングで、tfcmtでplan結果をコメント出力させる、CIを構築してみました。
tfcmtとは?
作成、変更、削除予定のAWSリソースを分かりやすく出力してくれるツール。
planの結果はterraformを触ったことのない方だと、少々見にくい印象ですが、tfcmtはこんな感じで整形してコメントに出力してくれます。
詳細は、公式ドキュメントをご参照ください。
サンプルコード
name: Terraform CI
on:
pull_request:
branches:
- develop
permissions:
id-token: write
contents: read
pull-requests: write
jobs:
terraform:
name: Terraform Plan
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v2
with:
role-to-assume: ${IAM Role ARN}
aws-region: ap-northeast-1
- name: Setup Terraform
uses: hashicorp/setup-terraform@v1
- name: Setup tfcmt
uses: shmokmt/actions-setup-tfcmt@v2
with:
version: v4.6.0
- name: Terraform fmt
id: fmt
run: terraform fmt -recursive
- name: Terraform init
id: init
run: terraform init
- name: Validate Terraform
id: validate
run: terraform validate
- name: Terraform Plan
id: plan
run: tfcmt plan -patch -- terraform plan -input=false
-
on: pull_request
でPR作成をCIのトリガーにする。 -
pull-requests: write
はコメント投稿に必要な権限なので、渡してあげる。 - patchオプションでplan結果の更新があれば併せてコメントも更新。
CIが通ると以下のようなコメントがPRに追加されます。
まとめ
tfcmtのおかげでPRレビューもより捗るようになりました。
内容に合わせてadd-or-updata
, delete
のラベルを付与してくれるのも有り難い!
Discussion