name: Terraform CI/CD

on:
  push:
  pull_request:

jobs:
  terraform:
    runs-on: ssot

    container:
      image: hashicorp/terraform:1.6.6

    steps:
      - name: Install dependencies
        run: apk add --no-cache nodejs npm git

      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Terraform Init
        run: terraform -chdir=terraform init -input=false

      - name: Terraform Validate
        run: terraform -chdir=terraform validate

      - name: Terraform Plan
        run: terraform -chdir=terraform plan -input=false -out=tfplan

      - name: Show plan
        run: terraform -chdir=terraform show -no-color tfplan > terraform/plan.txt

      - name: Upload plan artifact
        uses: actions/upload-artifact@v3
        with:
          name: terraform-plan
          path: |
            terraform/tfplan
            terraform/plan.txt

      - name: Terraform Apply
        if: github.ref == 'refs/heads/main'
        run: terraform -chdir=terraform apply -input=false -auto-approve tfplan
