Filtros de Execução em Jobs: Um Guia Prático
Os filtros de execução em jobs são uma ferramenta poderosa para otimizar o processo de automação. Neste tutorial, vamos explorar como aplicá-los com base em commits, permitindo que você execute jobs apenas quando necessário, economizando recursos e tempo.
O que são Filtros de Execução?
Filtros de execução são condições que determinam se um job deve ou não ser executado. Eles podem ser baseados em diversos critérios, como branch do repositório, mensagens de commit ou até mesmo o estado de outros jobs. Ao aplicar esses filtros, você garante que apenas as execuções relevantes ocorram, evitando desperdício de recursos.
Por que usar Filtros de Execução?
Utilizar filtros de execução traz uma série de benefícios:
- Eficiência: Reduz a carga de trabalho em servidores, executando apenas jobs necessários.
- Economia de Tempo: Minimiza o tempo gasto em execuções desnecessárias.
- Melhoria na Qualidade do Código: Focando em commits relevantes, você pode garantir que apenas as mudanças que realmente impactam o código sejam testadas.
Como Implementar Filtros de Execução
A implementação pode variar dependendo da ferramenta de CI/CD que você está utilizando. Aqui, vamos usar um exemplo com o GitHub Actions.
name: CI
on:
push:
branches:
- main
- 'feature/*'
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Run tests
run: npm test
Neste exemplo, o job de build será executado apenas quando houver um push para a branch main
ou qualquer branch que comece com feature/
. Isso evita que execuções ocorram em branches que não estão prontas para produção.
Explicação do Código
O código acima define um workflow do GitHub Actions que só será acionado em pushes para a branch main
ou em branches de features. O job de build irá realizar o checkout do código e rodar os testes apenas quando essas condições forem atendidas.
Filtros Baseados em Mensagens de Commit
Outra forma de aplicar filtros é através das mensagens de commit. Por exemplo, você pode querer que um job só seja executado se a mensagem do commit incluir um marcador específico, como [deploy]
.
name: Deploy
on:
push:
branches:
- main
jobs:
deploy:
if: contains(github.event.head_commit.message, '[deploy]')
runs-on: ubuntu-latest
steps:
- name: Deploy to production
run: ./deploy.sh
Analisando o Código
Aqui, o job de deploy será executado somente se a mensagem do último commit contiver a string [deploy]
. Isso ajuda a garantir que apenas commits intencionais para deploy acionem o processo, evitando erros e execuções desnecessárias.
Melhores Práticas para Filtros de Execução
- Seja Específico: Ao criar filtros, seja o mais específico possível para evitar falsas execuções.
- Documente Suas Regras: Mantenha uma documentação clara sobre quais filtros estão em uso e por quê.
- Teste Regularmente: Verifique se os filtros estão funcionando conforme o esperado, ajustando conforme necessário.
Conclusão
Os filtros de execução são uma parte essencial da automação moderna. Ao utilizá-los, você pode otimizar seus processos de CI/CD, economizando recursos e tempo. Experimente aplicar os conceitos discutidos neste guia e veja como eles podem impactar positivamente seu fluxo de trabalho.
Com a implementação correta, você garantirá que seus jobs sejam executados de forma eficiente e eficaz, mantendo a qualidade do seu código e a agilidade da sua equipe.
Contribuições de Camila Ribeiro