0Pricing
DevOps Bootcamp · Aula

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.sh

Objetos de contexto

As condições são lidas de objetos de contexto que descrevem a execução:

  • github — evento, referência, autor, hash
  • env — variáveis de ambiente
  • job e steps — status do trabalho anterior
  • runner — 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 falhou
  • always() — é executada independentemente do que aconteça
  • cancelled() — 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: ./logs

Dependê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.sh

Vá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.sh

Usando 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_OUTPUT

Combinando 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.

  • if controla etapas e tarefas por meio de expressões
  • Funções de status como failure() e always() substituem o comportamento de ignorar após uma falha
  • needs cria padrões de ordenação e convergência
  • As outputs das 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

  1. Compilações em matriz para vários ambientes
  2. Armazenamento em cache de dependências para ganhar velocidade
  3. Fluxos de trabalho e ações reutilizáveis
  4. Execução condicional e dependências de tarefas
← Voltar para DevOps Bootcamp