terraform plan

This commit is contained in:
Jun-te Kim 2025-12-06 17:15:03 +00:00
parent c0b1a54156
commit 8022f78666

View file

@ -1,4 +1,4 @@
dname: "Terraform Plan" name: "Terraform Plan"
on: on:
pull_request: pull_request:
@ -7,7 +7,7 @@ env:
TF_CLOUD_ORGANIZATION: "MealCraft" TF_CLOUD_ORGANIZATION: "MealCraft"
TF_API_TOKEN: "${{ secrets.TF_API_TOKEN }}" TF_API_TOKEN: "${{ secrets.TF_API_TOKEN }}"
TF_WORKSPACE: "production" TF_WORKSPACE: "production"
CONFIG_DIRECTORY: ${{ github.workspace }} CONFIG_DIRECTORY: "./"
TF_VAR_public_ip: "${{ secrets.PUBLIC_IP }}" TF_VAR_public_ip: "${{ secrets.PUBLIC_IP }}"
jobs: jobs:
@ -15,17 +15,12 @@ jobs:
if: github.repository != 'hashicorp-education/learn-terraform-github-actions' if: github.repository != 'hashicorp-education/learn-terraform-github-actions'
name: "Terraform Plan" name: "Terraform Plan"
runs-on: mealcraft-runners runs-on: mealcraft-runners
container: ubuntu:22.04 containers:
image: ghcr.io/catthehacker/ubuntu:runner-22.04
permissions: permissions:
contents: read contents: read
pull-requests: write pull-requests: write
steps: steps:
- name: Install dependencies
run: |
apt-get update
apt-get install -y curl unzip jq ca-certificates
- name: Checkout - name: Checkout
uses: actions/checkout@v3 uses: actions/checkout@v3
@ -57,45 +52,35 @@ jobs:
with: with:
github-token: ${{ secrets.GITHUB_TOKEN }} github-token: ${{ secrets.GITHUB_TOKEN }}
script: | script: |
const add = "${{ steps.plan-output.outputs.add }}"; // 1. Retrieve existing bot comments for the PR
const change = "${{ steps.plan-output.outputs.change }}";
const destroy = "${{ steps.plan-output.outputs.destroy }}";
const runLink = "${{ steps.plan-run.outputs.run_link }}";
const output = `
#### Terraform Cloud Plan Output
\`\`\`
Plan: ${add} to add, ${change} to change, ${destroy} to destroy.
\`\`\`
[Terraform Cloud Plan](${runLink})
`;
const { data: comments } = await github.rest.issues.listComments({ const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner, owner: context.repo.owner,
repo: context.repo.repo, repo: context.repo.repo,
issue_number: context.issue.number, issue_number: context.issue.number,
}); });
const botComment = comments.find(comment => {
const botComment = comments.find(c => return comment.user.type === 'Bot' && comment.body.includes('Terraform Cloud Plan Output')
c.user.type === "Bot" && c.body.includes("Terraform Cloud Plan Output") });
); const output = `#### Terraform Cloud Plan Output
\`\`\`
Plan: ${{ steps.plan-output.outputs.add }} to add, ${{ steps.plan-output.outputs.change }} to change, ${{ steps.plan-output.outputs.destroy }} to destroy.
\`\`\`
[Terraform Cloud Plan](${{ steps.plan-run.outputs.run_link }})
`;
if (botComment) { if (botComment) {
await github.rest.issues.deleteComment({ github.rest.issues.deleteComment({
owner: context.repo.owner, owner: context.repo.owner,
repo: context.repo.repo, repo: context.repo.repo,
comment_id: botComment.id, comment_id: botComment.id,
}); });
} }
github.rest.issues.createComment({
await github.rest.issues.createComment({ issue_number: context.issue.number,
owner: context.repo.owner, owner: context.repo.owner,
repo: context.repo.repo, repo: context.repo.repo,
issue_number: context.issue.number, body: output
body: output, })
});
- name: Print TF_VAR_public_ip - name: Print TF_VAR_public_ip
run: echo "📡 Public IP used by Terraform: $TF_VAR_public_ip" run: 'echo "📡 Public IP used by Terraform: $TF_VAR_public_ip"'