diff --git a/.github/workflows/reusable-deploy-vercel.yml b/.github/workflows/reusable-deploy-vercel.yml index 7f7e9c3..b6d0977 100644 --- a/.github/workflows/reusable-deploy-vercel.yml +++ b/.github/workflows/reusable-deploy-vercel.yml @@ -57,14 +57,11 @@ jobs: # ✅ MÁGICA: O paths-filter ESTÁ DE VOLTA - name: Check for code changes id: filter - uses: dorny/paths-filter@v3 + uses: dorny/paths-filter@v3.0.2 with: filters: | code: - 'src/**' - - '!src/**/*.md' - - '!src/**/*.mdx' - - '!src/**/*.txt' - 'public/**' - 'package.json' - 'pnpm-lock.yaml' @@ -72,29 +69,43 @@ jobs: - 'tsconfig.json' - 'eslint.config.mjs' - '.github/workflows/**' + docs: + # Documentação importante que deve trigger CI/CD + - 'src/**/*.mdx' # Blogs (precisam ser publicados) + - 'README.md' # Documentação principal + - 'CHANGELOG.md' # Histórico de mudanças + - 'CUSTOMIZATION.md' # Documentação de customização + # Workflows docs (já incluídos no filtro code) - name: Set code-changed output id: set-output - run: echo "code-changed=${{ steps.filter.outputs.code }}" >> $GITHUB_OUTPUT + run: | + # Considera mudança se houve alteração em código OU documentação + # Isso permite que blogs (.mdx) também triggerem deploy + if [[ "${{ steps.filter.outputs.code }}" == "true" || "${{ steps.filter.outputs.docs }}" == "true" ]]; then + echo "code-changed=true" >> $GITHUB_OUTPUT + else + echo "code-changed=false" >> $GITHUB_OUTPUT + fi # ✅ MÁGICA: Todos os steps de deploy agora dependem do filtro - name: Install Vercel CLI - if: steps.filter.outputs.code == 'true' + if: steps.set-output.outputs.code-changed == 'true' run: npm install --global vercel@latest - name: Pull Vercel Environment Information - if: steps.filter.outputs.code == 'true' + if: steps.set-output.outputs.code-changed == 'true' run: | # Correção do case-sensitive (Preview vs preview) ENV_NAME=$(echo "${{ inputs.vercel-environment }}" | tr '[:upper:]' '[:lower:]') vercel pull --yes --environment=$ENV_NAME --token=${{ secrets.vercel-token }} - name: Ensure Vercel cache directory exists - if: steps.filter.outputs.code == 'true' + if: steps.set-output.outputs.code-changed == 'true' run: mkdir -p ~/.vercel && touch ~/.vercel/.gitkeep - name: Cache Vercel CLI - if: steps.filter.outputs.code == 'true' + if: steps.set-output.outputs.code-changed == 'true' uses: actions/cache@v4 with: path: ~/.vercel @@ -103,11 +114,11 @@ jobs: vercel-cli-${{ runner.os }} - name: Build Project Artifacts - if: steps.filter.outputs.code == 'true' + if: steps.set-output.outputs.code-changed == 'true' run: vercel build ${{ inputs.prod && '--prod' || '' }} --token=${{ secrets.vercel-token }} - name: Deploy to Vercel - if: steps.filter.outputs.code == 'true' + if: steps.set-output.outputs.code-changed == 'true' id: deploy_step run: | DEPLOY_COMMAND="vercel deploy ${{ inputs.prebuilt && '--prebuilt' || '' }} ${{ inputs.prod && '--prod' || '' }} --token=${{ secrets.vercel-token }}" diff --git a/.github/workflows/reusable-test-and-lint.yml b/.github/workflows/reusable-test-and-lint.yml index d6a7300..9ba17b9 100644 --- a/.github/workflows/reusable-test-and-lint.yml +++ b/.github/workflows/reusable-test-and-lint.yml @@ -31,9 +31,6 @@ jobs: filters: | code: - 'src/**' - - '!src/**/*.md' - - '!src/**/*.mdx' - - '!src/**/*.txt' - 'public/**' - 'package.json' - 'pnpm-lock.yaml' @@ -41,32 +38,46 @@ jobs: - 'tsconfig.json' - 'eslint.config.mjs' - '.github/workflows/**' + docs: + # Documentação importante que deve trigger CI/CD + - 'src/**/*.mdx' # Blogs (precisam ser publicados) + - 'README.md' # Documentação principal + - 'CHANGELOG.md' # Histórico de mudanças + - 'CUSTOMIZATION.md' # Documentação de customização + # Workflows docs (já incluídos no filtro code) - name: Set code-changed output id: set-output - run: echo "code-changed=${{ steps.filter.outputs.code }}" >> $GITHUB_OUTPUT + run: | + # Considera mudança se houve alteração em código OU documentação + # Isso permite que blogs (.mdx) também triggerem CI/CD + if [[ "${{ steps.filter.outputs.code }}" == "true" || "${{ steps.filter.outputs.docs }}" == "true" ]]; then + echo "code-changed=true" >> $GITHUB_OUTPUT + else + echo "code-changed=false" >> $GITHUB_OUTPUT + fi - name: Setup pnpm - if: steps.filter.outputs.code == 'true' + if: steps.set-output.outputs.code-changed == 'true' uses: pnpm/action-setup@v4 - name: Setup Node.js ${{ inputs.node-version }} - if: steps.filter.outputs.code == 'true' + if: steps.set-output.outputs.code-changed == 'true' uses: actions/setup-node@v4 with: node-version: ${{ inputs.node-version }} cache: "pnpm" - name: Install dependencies - if: steps.filter.outputs.code == 'true' + if: steps.set-output.outputs.code-changed == 'true' run: pnpm install --frozen-lockfile - name: Ensure build cache directories exist - if: steps.filter.outputs.code == 'true' + if: steps.set-output.outputs.code-changed == 'true' run: mkdir -p .vite node_modules/.cache && touch .eslintcache - name: Cache build artifacts - if: steps.filter.outputs.code == 'true' + if: steps.set-output.outputs.code-changed == 'true' uses: actions/cache@v4 with: path: | @@ -79,13 +90,13 @@ jobs: build-${{ runner.os }}-node-${{ inputs.node-version }}- - name: Run linting - if: steps.filter.outputs.code == 'true' + if: steps.set-output.outputs.code-changed == 'true' run: pnpm run lint env: ESLINT_CACHE: .eslintcache - name: Run tests - if: steps.filter.outputs.code == 'true' + if: steps.set-output.outputs.code-changed == 'true' run: pnpm run test:ci - name: Upload debug logs on failure