terraform-plan-changes-countについて
Terraformのplanに含まれるchangesの件数を取得するためのGitHub ActionsのActionです
下記の例が全て
steps: - uses: hashicorp/setup-terraform@v3 - run: terraform plan -out=tfplan - name: Run terraform-plan-changes-count id: plan-changes uses: sue445/terraform-plan-changes-count@v0 with: plan-path: tfplan - name: Print outputs run: | echo "CREATE_COUNT=${CREATE_COUNT}" echo "UPDATE_COUNT=${UPDATE_COUNT}" echo "DELETE_COUNT=${DELETE_COUNT}" echo "TOTAL_COUNT=${TOTAL_COUNT}" env: CREATE_COUNT: ${{ steps.plan-changes.outputs.create }} UPDATE_COUNT: ${{ steps.plan-changes.outputs.update }} DELETE_COUNT: ${{ steps.plan-changes.outputs.delete }} TOTAL_COUNT: ${{ steps.plan-changes.outputs.total }}
モチベーション
僕は個人でTerraformのリポジトリを10個以上メンテしています。
Terraformの本体やProviderをバージョンアップするPRは毎月自動で作られるのですが、planの結果を見て1つずつマージしていくのも大変です。
これらのPRの場合基本的にplanのchanges(create, update, delete)の件数が0件なことがほとんどなので、ほとんどのケースで自動マージできます。
そのためGitHub Actions上でplanのchangesの件数を取得しやすくするために作りました。
例:dependabotが作ったPRでplanのchangesの件数が0件だった場合に自動マージする例
jobs: terraform: permissions: contents: write pull-requests: write steps: - name: Run terraform-plan-changes-count id: plan-changes uses: sue445/terraform-plan-changes-count@v0 with: plan-path: tfplan - name: Auto-merge Dependabot PR when there are no plan changes run: | gh pr review --approve "$PR_URL" gh pr merge --auto --merge "$PR_URL" if: github.event_name == 'pull_request' && steps.plan-changes.outputs.total == '0' && github.actor == 'dependabot[bot]' env: PR_URL: ${{ github.event.pull_request.html_url }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
元ネタ
GitLabだと下記のような方法でplanのchangesの件数を取得してMergeRequest上で表示することができます。

















