Skip to main content

Using conditions to control job execution

Prevent a job from running unless your conditions are met.

Overview

Observação

Um trabalho ignorado relatará o respectivo status como "Success". Ele não impedirá a mesclagem de uma solicitação de pull, mesmo que seja uma verificação necessária.

Use o condicional jobs.<job_id>.if para impedir que um trabalho seja executado, a não ser que uma condição seja atendida. Você pode usar qualquer contexto e expressão compatível para criar uma condicional. Para obter mais informações sobre quais contextos têm suporte nessa chave, confira Acessar informações contextuais sobre execuções de fluxo de trabalho.

Observação

A condição jobs.<job_id>.if é avaliada antes de jobs.<job_id>.strategy.matrix ser aplicado.

Ao usar expressões em um condicional if, opcionalmente, você poderá omitir a sintaxe de expressão ${{ }}, pois o GitHub Actions avalia automaticamente o condicional if como uma expressão. No entanto, essa exceção não se aplica a todos os lugares.

Você sempre deverá usar a sintaxe de expressão ${{ }} ou escapar com '', "" ou () quando a expressão começar com !, já que ! é a notação reservada no formato YAML. Por exemplo:

if: ${{ ! startsWith(github.ref, 'refs/tags/') }}

Para obter mais informações, confira Avaliar expressões em fluxos de trabalho e ações.

Exemplo: Somente executar o trabalho para um repositório específico

Este exemplo usa if para controlar quando o trabalho production-deploy pode ser executado. Ele só será executado se o repositório for chamado octo-repo-prod e estiver na organização octo-org. Caso contrário, o trabalho será marcado como ignorado.

YAML
name: example-workflow
on: [push]
jobs:
  production-deploy:
    if: github.repository == 'octo-org/octo-repo-prod'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '14'
      - run: npm install -g bats

On a skipped job, you should see "This check was skipped."

Observação

In some parts of the workflow you cannot use environment variables. Instead you can use contexts to access the value of an environment variable. For more information, see Store information in variables.