Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 22 additions & 11 deletions .github/workflows/reusable-deploy-vercel.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,44 +57,55 @@ 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'
- 'vite.config.ts'
- '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
Expand All @@ -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 }}"
Expand Down
33 changes: 22 additions & 11 deletions .github/workflows/reusable-test-and-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,42 +31,53 @@ jobs:
filters: |
code:
- 'src/**'
- '!src/**/*.md'
- '!src/**/*.mdx'
- '!src/**/*.txt'
- 'public/**'
- 'package.json'
- 'pnpm-lock.yaml'
- 'vite.config.ts'
- '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: |
Expand All @@ -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
Expand Down