Skip to content

Commit cb6d045

Browse files
committed
Skip Terraform apply when infra is unchanged
1 parent 7680777 commit cb6d045

1 file changed

Lines changed: 29 additions & 1 deletion

File tree

.github/workflows/deploy.yml

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,23 +152,50 @@ jobs:
152152
steps:
153153
- name: Checkout code
154154
uses: actions/checkout@v6
155+
with:
156+
fetch-depth: 0
157+
158+
- name: Check Terraform changes
159+
id: terraform-changes
160+
run: |
161+
if [[ "${{ github.event_name }}" != "push" ]]; then
162+
echo "changed=true" >> "$GITHUB_OUTPUT"
163+
exit 0
164+
fi
165+
166+
BEFORE_SHA="${{ github.event.before }}"
167+
if [[ "$BEFORE_SHA" =~ ^0+$ ]]; then
168+
echo "changed=true" >> "$GITHUB_OUTPUT"
169+
exit 0
170+
fi
171+
172+
if git diff --quiet "$BEFORE_SHA" "${{ github.sha }}" -- terraform; then
173+
echo "changed=false" >> "$GITHUB_OUTPUT"
174+
echo "No Terraform changes detected; skipping Terraform apply."
175+
else
176+
echo "changed=true" >> "$GITHUB_OUTPUT"
177+
fi
155178
156179
- name: Authenticate to Google Cloud
180+
if: steps.terraform-changes.outputs.changed == 'true'
157181
uses: google-github-actions/auth@v3
158182
with:
159183
workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}
160184
service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}
161185

162186
- name: Setup Terraform
187+
if: steps.terraform-changes.outputs.changed == 'true'
163188
uses: hashicorp/setup-terraform@v4
164189
with:
165-
terraform_version: 1.6.0
190+
terraform_version: 1.15.3
166191

167192
- name: Terraform init
193+
if: steps.terraform-changes.outputs.changed == 'true'
168194
working-directory: ./terraform
169195
run: terraform init -input=false
170196

171197
- name: Terraform plan
198+
if: steps.terraform-changes.outputs.changed == 'true'
172199
working-directory: ./terraform
173200
env:
174201
TF_VAR_supabase_url: ${{ secrets.SUPABASE_URL }}
@@ -183,6 +210,7 @@ jobs:
183210
run: terraform plan -out=tfplan -input=false
184211

185212
- name: Terraform apply
213+
if: steps.terraform-changes.outputs.changed == 'true'
186214
working-directory: ./terraform
187215
run: terraform apply -input=false tfplan
188216

0 commit comments

Comments
 (0)