Filtragem por caminho e compilações seletivas
Acione apenas os fluxos de trabalho e as tarefas afetados por uma alteração usando filtros de caminho, detecção de alterações e matrizes condicionais em monorrepositórios e configurações com vários repositórios.
Filtragem por caminho e compilações seletivas é uma aula grátis de CI/CD with GitHub Actions & DevOps Pipelines no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de CI/CD with GitHub Actions & DevOps Pipelines, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de CI/CD with GitHub Actions & DevOps Pipelines inclui 4 aulas no total.
O problema das compilações desperdiçadas
Em um monorepositório, uma alteração na documentação não deveria recompilar e reimplantar o backend, o frontend e o aplicativo móvel.
As compilações seletivas executam apenas as partes do pipeline afetadas por uma alteração, economizando tempo e minutos do executor.
Filtros de caminho nos gatilhos
A abordagem mais simples é o filtro paths no gatilho. Um fluxo de trabalho só é executado quando arquivos que correspondem ao padrão são alterados.
on:
push:
paths:
- 'services/api/**'Ignorando caminhos
Você também pode fazer o inverso com paths-ignore: execute o fluxo de trabalho para tudo exceto os caminhos listados.
Isso é útil para ignorar o CI em alterações somente de documentação.
on:
push:
paths-ignore:
- 'docs/**'
- '**.md'Limitações dos filtros de gatilho
Os filtros no nível do gatilho decidem se o fluxo de trabalho inteiro será executado. Porém, em um monorepositório, muitas vezes você quer um fluxo de trabalho que decida quais trabalhos executar.
Para isso, detecte as alterações dentro do fluxo de trabalho e ramifique com base no resultado.
Ação de detecção de alterações
A action dorny/paths-filter inspeciona o diff e produz valores booleanos para cada grupo nomeado de caminhos.
Os trabalhos posteriores leem esses resultados para decidir se devem ser executados.
- uses: dorny/paths-filter@v3
id: changes
with:
filters: |
api:
- 'services/api/**'
web:
- 'services/web/**'Condicionamento de trabalhos às alterações detectadas
Um trabalho de detecção expõe resultados; os trabalhos seguintes usam if com o contexto needs para serem executados condicionalmente.
build-api:
needs: detect
if: needs.detect.outputs.api == 'true'
runs-on: ubuntu-latest
steps:
- run: ./build-api.shConectando os resultados
O trabalho de detecção deve declarar outputs que encaminhem os resultados do filtro para que outros trabalhos possam lê-los.
detect:
runs-on: ubuntu-latest
outputs:
api: ${{ steps.changes.outputs.api }}
web: ${{ steps.changes.outputs.web }}Matrizes dinâmicas
Para muitos serviços, você pode criar uma matriz dinamicamente a partir dos caminhos alterados, para que somente os serviços alterados entrem na matriz.
Gere uma lista JSON em um trabalho e forneça-a à matriz do próximo.
strategy:
matrix:
service: ${{ fromJSON(needs.detect.outputs.list) }}Git Diff para detecção
Você também pode detectar alterações com o git puro. Compare o commit atual com a base para listar os diretórios alterados.
git diff --name-only origin/main...HEAD | cut -d/ -f1-2 | sort -uVerificações obrigatórias e ignoradas
Atenção: se uma verificação de status obrigatória for ignorada porque nada mudou, a proteção da branch poderá bloquear o merge enquanto espera por ela.
A solução é adicionar um trabalho de controle final que sempre seja bem-sucedido e seja a única verificação obrigatória, resumindo os trabalhos condicionais.
gate:
needs: [build-api, build-web]
if: always()
runs-on: ubuntu-latest
steps:
- run: echo 'all required jobs resolved'Cache por pacote
As compilações seletivas combinam bem com caches por pacote. Use o arquivo de bloqueio de cada serviço como chave do cache para que alterações não relacionadas não o invalidem.
Juntos, eles mantêm os pipelines do monorepositório rápidos mesmo com o crescimento do repositório.
Verificação rápida
Teste sua compreensão sobre compilações seletivas.
Recapitulação
Você aprendeu a compilar apenas o que foi alterado.
pathsepaths-ignorecontrolam fluxos de trabalho inteiros- As ações de detecção de alterações produzem valores booleanos por caminho
- Os trabalhos usam
if+needspara serem executados condicionalmente, e as matrizes podem ser criadas dinamicamente - Adicione um trabalho de controle com
always()para compatibilidade com verificações obrigatórias
As compilações seletivas mantêm o CI/CD do monorepositório rápido e econômico.
Perguntas Frequentes
A aula “Filtragem por caminho e compilações seletivas” é grátis?
Sim — o texto completo de “Filtragem por caminho e compilações seletivas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de CI/CD with GitHub Actions & DevOps Pipelines, atualize para CoddyKit PRO. O curso de CI/CD with GitHub Actions & DevOps Pipelines inclui 4 aulas no total.
O que vou aprender em “Filtragem por caminho e compilações seletivas”?
Acione apenas os fluxos de trabalho e as tarefas afetados por uma alteração usando filtros de caminho, detecção de alterações e matrizes condicionais em monorrepositórios e configurações com vários r… Você pratica CI/CD with GitHub Actions & DevOps Pipelines com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar CI/CD with GitHub Actions & DevOps Pipelines?
Nenhuma experiência prévia é necessária. CI/CD with GitHub Actions & DevOps Pipelines no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Filtragem por caminho e compilações seletivas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de CI/CD with GitHub Actions & DevOps Pipelines?
Sim. Cada aula de CI/CD with GitHub Actions & DevOps Pipelines inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- CI/CD para monorrepositórios
- Fluxos de trabalho entre repositórios
- Gerenciamento centralizado de fluxos de trabalho
- Filtragem por caminho e compilações seletivas