name: Terraform CI/CD on: push: branches: [ main ] pull_request: branches: [ main ] jobs: terraform: runs-on: ubuntu-latest env: ARM_SUBSCRIPTION_ID: ${{ secrets.ARM_SUBSCRIPTION_ID }} ARM_CLIENT_ID: ${{ secrets.ARM_CLIENT_ID }} ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }} ARM_TENANT_ID: ${{ secrets.ARM_TENANT_ID }} steps: - name: Checkout Code uses: actions/checkout@v3 - name: Setup Terraform uses: hashicorp/setup-terraform@v2 - name: Terraform Init (Dev) run: | cd environments/dev terraform init continue-on-error: false - name: Terraform Plan (Dev) run: | cd environments/dev terraform plan -out=dev.plan continue-on-error: false - name: Terraform Apply (Dev) if: github.ref == 'refs/heads/main' && github.event_name == 'push' run: | cd environments/dev terraform apply dev.plan continue-on-error: false - name: Terraform Init (Prod) run: | cd environments/prod terraform init continue-on-error: false - name: Terraform Plan (Prod) run: | cd environments/prod terraform plan -out=prod.plan continue-on-error: false - name: Terraform Apply (Prod) if: github.ref == 'refs/heads/main' && github.event_name == 'push' run: | cd environments/prod terraform apply prod.plan continue-on-error: false - name: Terraform Validate run: | cd environments/dev terraform validate cd ../prod terraform validate