From 3dd0ee3fb20df7ffac7b44096e82658c1d7d7a75 Mon Sep 17 00:00:00 2001 From: Maxson Almeida Date: Sat, 6 Dec 2025 15:27:49 -0300 Subject: [PATCH] =?UTF-8?q?fix:=20corrige=20workflow=20terraform=20apply?= =?UTF-8?q?=20para=20detectar=20mudan=C3=A7as=20corretamente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove exit 0 que interrompia o workflow quando PR não era encontrada - Implementa detecção inteligente via git diff como fallback - Aplica terraform apenas nos ambientes com mudanças reais - Melhora logs para facilitar debugging --- .github/workflows/tf_apply.yaml | 44 ++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/.github/workflows/tf_apply.yaml b/.github/workflows/tf_apply.yaml index 61c0ecb..d4a14c4 100644 --- a/.github/workflows/tf_apply.yaml +++ b/.github/workflows/tf_apply.yaml @@ -40,32 +40,46 @@ jobs: run: | PR_NUMBER=$(gh pr list --state merged --json number,mergeCommit --jq ".[] | select(.mergeCommit.oid == \"${{ github.sha }}\") | .number") if [ -z "$PR_NUMBER" ]; then - echo "No PR found for this commit." - exit 0 + echo "No PR found for this commit. Will apply all environments as fallback." + echo "pr_number=" >> $GITHUB_OUTPUT + else + echo "Found PR number: $PR_NUMBER" + echo "pr_number=$PR_NUMBER" >> $GITHUB_OUTPUT fi - echo "Found PR number: $PR_NUMBER" - echo "pr_number=$PR_NUMBER" >> $GITHUB_OUTPUT - - name: Detect changed Terraform directories from PR + - name: Detect changed Terraform directories id: detect - if: steps.get_pr.outputs.pr_number run: | - PR_NUMBER=${{ steps.get_pr.outputs.pr_number }} - - FILES=$(gh pr view $PR_NUMBER --json files --jq '.files[].path') - echo "Changed files from PR $PR_NUMBER:" - echo "$FILES" + if [ -n "${{ steps.get_pr.outputs.pr_number }}" ]; then + # Método 1: Detectar via PR + PR_NUMBER=${{ steps.get_pr.outputs.pr_number }} + echo "Detecting changes from PR $PR_NUMBER..." + + FILES=$(gh pr view $PR_NUMBER --json files --jq '.files[].path') + echo "Changed files from PR $PR_NUMBER:" + echo "$FILES" + else + # Método 2: Detectar via git diff do commit atual + echo "No PR found. Detecting changes from commit diff..." + FILES=$(git diff --name-only HEAD~1 HEAD) + echo "Changed files from commit ${{ github.sha }}:" + echo "$FILES" + fi - # Check for dev environment changes (terraform/env/dev/) + # Verificar mudanças no ambiente dev (terraform/env/dev/) if echo "$FILES" | grep -q "^terraform/env/dev/"; then - echo "setting has_dev=true" + echo "Dev environment changes detected" echo "has_dev=true" >> $GITHUB_OUTPUT + else + echo "No dev environment changes detected" fi - # Check for shared infrastructure changes (top-level terraform/, excluding terraform/env/) + # Verificar mudanças na infraestrutura compartilhada (terraform/ excluindo terraform/env/) if echo "$FILES" | grep "^terraform/" | grep -v "^terraform/env/" | grep -q .; then - echo "setting has_shared=true" + echo "Shared infrastructure changes detected" echo "has_shared=true" >> $GITHUB_OUTPUT + else + echo "No shared infrastructure changes detected" fi - name: Apply Shared Infrastructure