terraform plan
This commit is contained in:
parent
c0b1a54156
commit
8022f78666
1 changed files with 21 additions and 36 deletions
57
.github/workflows/terraform-plan.yml
vendored
57
.github/workflows/terraform-plan.yml
vendored
|
|
@ -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"'
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue