Skip to main content

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

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

Обзор

Note

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

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

Note

Условие 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

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