Execução condicional e dependências de tarefas
Controle quando etapas e tarefas são executadas usando condições if, a palavra-chave needs, expressões e funções de verificação de status nos fluxos de trabalho do GitHub Actions.
Execução condicional e dependências de tarefas é uma aula grátis de DevOps Bootcamp 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 DevOps Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de DevOps Bootcamp inclui 4 aulas no total.
Por que as condições são importantes
Nem toda etapa deve ser executada sempre. Talvez você queira executar uma etapa de implantação apenas no ramo main ou uma etapa de notificação apenas quando algo falhar.
O GitHub Actions permite anexar uma condição if a qualquer etapa ou tarefa para controlar se ela será executada.
A chave if
Adicione uma chave if: a uma etapa. A etapa só será executada quando a expressão resultar em verdadeiro.
As expressões dentro de if não precisam do invólucro ${{ }}, embora ele seja permitido.
steps:
- name: Deploy
if: github.ref == 'refs/heads/main'
run: ./deploy.shObjetos de contexto
As condições são lidas de objetos de contexto que descrevem a execução:
github— evento, referência, autor, hashenv— variáveis de ambientejobesteps— status do trabalho anteriorrunner— OS e arquitetura
Por exemplo, github.event_name informa se um envio ou uma solicitação de alteração iniciou a execução.
Funções de verificação de status
Por padrão, uma etapa é ignorada se uma etapa anterior falhar. Para substituir esse comportamento, use as funções de status:
success()— verdadeiro se nenhuma etapa anterior falhou (o padrão)failure()— verdadeiro se alguma etapa anterior falhoualways()— é executada independentemente do que aconteçacancelled()— verdadeiro se a execução tiver sido cancelada
- name: Notify on failure
if: failure()
run: echo 'Build failed, sending alert'Sempre executar a limpeza
Um padrão comum é uma etapa de limpeza que deve ser executada mesmo se etapas anteriores falharem. Use if: always().
Isso garante que recursos temporários, contêineres ou relatórios de testes sejam tratados independentemente do resultado.
- name: Upload logs
if: always()
uses: actions/upload-artifact@v4
with:
name: logs
path: ./logsDependências entre tarefas
A palavra-chave needs faz uma tarefa aguardar outras. Sem ela, as tarefas são executadas em paralelo.
Uma tarefa listada em needs deve ser concluída com êxito antes que a tarefa dependente seja iniciada.
jobs:
test:
runs-on: ubuntu-latest
steps:
- run: npm test
deploy:
needs: test
runs-on: ubuntu-latest
steps:
- run: ./deploy.shVárias dependências
Uma tarefa pode depender de várias outras ao receber uma lista em needs. Ela aguarda todas elas.
É assim que se criam padrões de convergência, nos quais uma tarefa final é executada somente depois que todas as tarefas paralelas são concluídas com êxito.
release:
needs: [lint, test, build]
runs-on: ubuntu-latest
steps:
- run: echo 'all checks passed'Tarefas condicionais
A chave if também funciona em tarefas, não apenas em etapas. Uma condição no nível da tarefa decide se a tarefa inteira será executada.
Aqui, a tarefa de implantação é executada somente para envios à ramificação main, embora ainda dependa dos testes.
deploy:
needs: test
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- run: ./deploy.shUsando as saídas das tarefas
As tarefas podem passar dados para as etapas seguintes por meio de outputs. Uma tarefa dependente lê esses dados através do contexto needs.
Isso permite que uma condição dependa de um valor calculado anteriormente, como a indicação de que uma versão foi alterada.
check:
runs-on: ubuntu-latest
outputs:
changed: ${{ steps.diff.outputs.changed }}
steps:
- id: diff
run: echo 'changed=true' >> $GITHUB_OUTPUTCombinando condições
É possível combinar expressões com && (e), || (ou) e ! (não).
Este exemplo é executado somente para um envio bem-sucedido à ramificação principal que não seja uma bifurcação.
if: success() && github.ref == 'refs/heads/main' && github.event_name == 'push'Execução incondicional com dependências
Atenção: uma tarefa com needs é ignorada se uma dependência falhar. Para executar uma tarefa final de geração de relatórios independentemente do resultado, combine needs com if: always().
Dentro dela, você pode inspecionar needs.<job>.result para decidir o que informar.
report:
needs: [test, build]
if: always()
runs-on: ubuntu-latest
steps:
- run: echo ${{ needs.test.result }}Verificação rápida
Teste sua compreensão da execução condicional.
Recapitulação
Você aprendeu a controlar o fluxo de trabalho com condições e dependências.
ifcontrola etapas e tarefas por meio de expressões- Funções de status como
failure()ealways()substituem o comportamento de ignorar após uma falha needscria padrões de ordenação e convergência- As
outputsdas tarefas fornecem valores para condições posteriores
Esses elementos básicos permitem criar processos precisos e eficientes.
Perguntas Frequentes
A aula “Execução condicional e dependências de tarefas” é grátis?
Sim — o texto completo de “Execução condicional e dependências de tarefas” é 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 DevOps Bootcamp, atualize para CoddyKit PRO. O curso de DevOps Bootcamp inclui 4 aulas no total.
O que vou aprender em “Execução condicional e dependências de tarefas”?
Controle quando etapas e tarefas são executadas usando condições if, a palavra-chave needs, expressões e funções de verificação de status nos fluxos de trabalho do GitHub Actions. Você pratica DevOps Bootcamp 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 DevOps Bootcamp?
Nenhuma experiência prévia é necessária. DevOps Bootcamp 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 “Execução condicional e dependências de tarefas”?
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 DevOps Bootcamp?
Sim. Cada aula de DevOps Bootcamp 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
- Compilações em matriz para vários ambientes
- Armazenamento em cache de dependências para ganhar velocidade
- Fluxos de trabalho e ações reutilizáveis
- Execução condicional e dependências de tarefas