diff --git a/workflows/terraform.yml b/workflows/terraform.yml new file mode 100644 index 0000000..6642018 --- /dev/null +++ b/workflows/terraform.yml @@ -0,0 +1,68 @@ +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 \ No newline at end of file