@@ -10,18 +10,19 @@ permissions:
1010 contents : read
1111
1212jobs :
13- terraform :
14- name : Terraform Apply
13+ terraform-plan :
14+ name : Terraform Plan
1515 runs-on : ubuntu-latest
1616
17- environment : prod-approval # 👈 This enables manual approval
18-
1917 env :
2018 ARM_CLIENT_ID : ${{ secrets.ARM_CLIENT_ID }}
2119 ARM_CLIENT_SECRET : ${{ secrets.ARM_CLIENT_SECRET }}
2220 ARM_SUBSCRIPTION_ID : ${{ secrets.ARM_SUBSCRIPTION_ID }}
2321 ARM_TENANT_ID : ${{ secrets.ARM_TENANT_ID }}
2422
23+ outputs :
24+ plan-status : ${{ steps.plan.outcome }}
25+
2526 steps :
2627 - name : Checkout repository
2728 uses : actions/checkout@v4
@@ -30,20 +31,61 @@ jobs:
3031 uses : hashicorp/setup-terraform@v3
3132 with :
3233 terraform_version : 1.7.5
33-
34+
3435 - name : Azure Login
3536 uses : azure/login@v2
3637 with :
3738 client-id : ${{ secrets.ARM_CLIENT_ID }}
3839 tenant-id : ${{ secrets.ARM_TENANT_ID }}
3940 subscription-id : ${{ secrets.ARM_SUBSCRIPTION_ID }}
4041
41-
4242 - name : Terraform Init
4343 run : terraform init
4444
4545 - name : Terraform Plan
46+ id : plan
4647 run : terraform plan -out=tfplan
4748
49+ - name : Upload tfplan Artifact
50+ uses : actions/upload-artifact@v4
51+ with :
52+ name : tfplan
53+ path : tfplan
54+
55+
56+ terraform-apply :
57+ name : Terraform Apply (after approval)
58+ needs : terraform-plan
59+ runs-on : ubuntu-latest
60+ environment : prod-approval # 👈 Manual approval here
61+
62+ env :
63+ ARM_CLIENT_ID : ${{ secrets.ARM_CLIENT_ID }}
64+ ARM_CLIENT_SECRET : ${{ secrets.ARM_CLIENT_SECRET }}
65+ ARM_SUBSCRIPTION_ID : ${{ secrets.ARM_SUBSCRIPTION_ID }}
66+ ARM_TENANT_ID : ${{ secrets.ARM_TENANT_ID }}
67+
68+ steps :
69+ - name : Checkout repository
70+ uses : actions/checkout@v4
71+
72+ - name : Set up Terraform
73+ uses : hashicorp/setup-terraform@v3
74+ with :
75+ terraform_version : 1.7.5
76+
77+ - name : Azure Login
78+ uses : azure/login@v2
79+ with :
80+ client-id : ${{ secrets.ARM_CLIENT_ID }}
81+ tenant-id : ${{ secrets.ARM_TENANT_ID }}
82+ subscription-id : ${{ secrets.ARM_SUBSCRIPTION_ID }}
83+
84+ - name : Download tfplan Artifact
85+ uses : actions/download-artifact@v4
86+ with :
87+ name : tfplan
88+ path : .
89+
4890 - name : Terraform Apply
4991 run : terraform apply -auto-approve tfplan
0 commit comments