Skip to main content

Использование условий для управления выполнением задания

Запретите выполнение задания, если не выполнены ваши условия.

Обзор

Примечание. Пропущенное задание имеет состояние "Успешно". Это не помешает слиянию запроса на вытягивание, даже если это обязательная проверка.

Условное выражение jobs.<job_id>.if можно использовать для предотвращения выполнения задания, если условие не выполняется. Для создания условного выражения можно использовать любой поддерживаемый контекст и любое выражение. Дополнительные сведения о том, какие контексты поддерживаются в этом ключе, см. в разделе "Доступ к контекстной информации о запусках рабочих процессов".

Примечание. Условие jobs.<job_id>.if вычисляется перед jobs.<job_id>.strategy.matrix применением.

При использовании выражений в условном if режиме можно, при необходимости, опустить синтаксис выражения ${{ }}, так как GitHub Actions автоматически вычисляет условное if выражение как выражение. Однако это исключение не применяется везде.

Всегда следует использовать синтаксис выражения ${{ }}{% концевого выражения %} или экранировать с '', ""либо () когда выражение начинается с !, так как ! зарезервировано нотация в формате YAML. Например:

{% raw %}

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

Дополнительные сведения см. в разделе "Оценка выражений в рабочих процессах и действиях".

Пример. Выполнение задания только для определенного репозитория

В этом примере используется if для управления выполнением задания production-deploy. Оно будет выполняться только в том случае, если репозиторий имеет имя octo-repo-prod и находится в организации octo-org. В противном случае задание будет отмечено как пропущенное.

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

В пропущенном задании должно появиться сообщение "Эта проверка была пропущена".

Note

В некоторых частях рабочего процесса нельзя использовать переменные среды. Вместо этого можно использовать контексты для доступа к значению переменной среды. Дополнительные сведения см. в разделе Хранение сведений в переменных.