juntekim.com/.github/workflows/terraform-plan.yml
Workflow config file is invalid. Please check your config file: yaml: line 68: could not find expected ':'
2025-12-06 17:13:59 +00:00

101 lines
3 KiB
YAML

dname: "Terraform Plan"
on:
pull_request:
env:
TF_CLOUD_ORGANIZATION: "MealCraft"
TF_API_TOKEN: "${{ secrets.TF_API_TOKEN }}"
TF_WORKSPACE: "production"
CONFIG_DIRECTORY: ${{ github.workspace }}
TF_VAR_public_ip: "${{ secrets.PUBLIC_IP }}"
jobs:
terraform:
if: github.repository != 'hashicorp-education/learn-terraform-github-actions'
name: "Terraform Plan"
runs-on: mealcraft-runners
container: ubuntu:22.04
permissions:
contents: read
pull-requests: write
steps:
- name: Install dependencies
run: |
apt-get update
apt-get install -y curl unzip jq ca-certificates
- name: Checkout
uses: actions/checkout@v3
- name: Upload Configuration
uses: hashicorp/tfc-workflows-github/actions/upload-configuration@v1.0.0
id: plan-upload
with:
workspace: ${{ env.TF_WORKSPACE }}
directory: ${{ env.CONFIG_DIRECTORY }}
speculative: true
- name: Create Plan Run
uses: hashicorp/tfc-workflows-github/actions/create-run@v1.0.0
id: plan-run
with:
workspace: ${{ env.TF_WORKSPACE }}
configuration_version: ${{ steps.plan-upload.outputs.configuration_version_id }}
plan_only: true
- name: Get Plan Output
uses: hashicorp/tfc-workflows-github/actions/plan-output@v1.0.0
id: plan-output
with:
plan: ${{ fromJSON(steps.plan-run.outputs.payload).data.relationships.plan.data.id }}
- name: Update PR
uses: actions/github-script@v6
id: plan-comment
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const add = "${{ steps.plan-output.outputs.add }}";
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({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
});
const botComment = comments.find(c =>
c.user.type === "Bot" && c.body.includes("Terraform Cloud Plan Output")
);
if (botComment) {
await github.rest.issues.deleteComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: botComment.id,
});
}
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: output,
});
- name: Print TF_VAR_public_ip
run: echo "📡 Public IP used by Terraform: $TF_VAR_public_ip"