diff --git a/workflows/terraform-plan.yaml.tpl b/workflows/terraform-plan.yaml.tpl index 63f91c5..5d3d322 100644 --- a/workflows/terraform-plan.yaml.tpl +++ b/workflows/terraform-plan.yaml.tpl @@ -33,15 +33,22 @@ jobs: - uses: CSVD/gh-actions-setup-terraform@v2 with: terraform_version: $${{ vars.terraform_version }} - + - name: Terraform Format id: fmt - continue-on-error: true - %{ if directory != null } - working-directory: ${directory} - %{ endif } run: | - terraform fmt -check + terraform fmt + if ! git diff-index --quiet HEAD; then + git config --global user.name '${git_owner.name}' + git config --global user.email '${git_owner.email}' + git commit -am "Autoformatting TF Code" + git push + echo "auto_format=true" >> $GITHUB_ENV + fi + + - name: Autoformat Halt + if: env.auto_format == 'true' + run: exit 1 - name: Terraform Init id: init @@ -65,60 +72,22 @@ jobs: run: terraform plan continue-on-error: true - - uses: actions/github-script@v7 + - name: Update Pull Request + uses: CSVD/gh-actions-github-script@v6 if: github.event_name == 'pull_request' - env: - PLAN: "terraform\n$${{ steps.plan.outputs.stdout }}" with: - github-token: $${{ secrets.GH_TOKEN }} + github-token: ${{ secrets.GH_TOKEN }} script: | - // 1. Retrieve existing bot comments for the PR - const { data: comments } = await github.rest.issues.listComments({ + const output = `#### Terraform Format and Style 🖌\`${{ steps.fmt.outcome }}\` + #### Terraform Initialization ⚙️\`${{ steps.init.outcome }}\` + #### Terraform Validation 🤖\`${{ steps.validate.outcome }}\` + #### Terraform Plan: + ${{ steps.plan.outcome }} + *Pushed by: @${{ github.actor }}, Action: \`${{ github.event_name }}\`*`; + + github.rest.issues.createComment({ + issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - issue_number: context.issue.number, - }) - const botComment = comments.find(comment => { - return comment.user.type === 'Bot' && comment.body.includes('Terraform Format and Style') - }) - - // 2. Prepare format of the comment - const output = `#### Terraform Format and Style 🖌\`$${{ steps.fmt.outcome }}\` - #### Terraform Initialization ⚙️\`$${{ steps.init.outcome }}\` - #### Terraform Validation 🤖\`$${{ steps.validate.outcome }}\` -
Validation Output - - \`\`\`\n - $${{ steps.validate.outputs.stdout }} - \`\`\` - -
- - #### Terraform Plan 📖\`$${{ steps.plan.outcome }}\` - -
Show Plan - - \`\`\`\n - $${process.env.PLAN} - \`\`\` - -
- - *Pusher: @$${{ github.actor }}, Action: \`$${{ github.event_name }}\`, Working Directory: \`$${{ env.tf_actions_working_dir }}\`, Workflow: \`$${{ github.workflow }}\`*`; - - // 3. If we have a comment, update it, otherwise create a new one - if (botComment) { - github.rest.issues.updateComment({ - owner: context.repo.owner, - repo: context.repo.repo, - comment_id: botComment.id, - body: output - }) - } else { - github.rest.issues.createComment({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - body: output - }) - } \ No newline at end of file + body: output + }) \ No newline at end of file