Обзор
Примечание. Если параллелизм задается на уровне задания, упорядочение не гарантируется для заданий или запусков, которые отстоят на интервал в пределах 5 минут друг от друга в очереди.
Можно использовать jobs.<job_id>.concurrency
, чтобы одновременно могли выполняться только одно задание или один процесс с использованием той же группы параллелизма. Группа параллелизма может представлять собой любую строку или выражение. Контексты разрешенных выражений: github
,inputs
, vars
,needs
,strategy
и .matrix
Дополнительные сведения о выражениях см. в разделе "Выражения".
Можно также указать concurrency
на уровне рабочего процесса. Дополнительные сведения см. в разделе concurrency
.
Если параллельное задание или рабочий процесс добавлены в очередь и выполняется другое задание или рабочий процесс, использующие ту же группу параллелизма в репозитории, то находящиеся в очереди задание или рабочий процесс будут pending
. Все задания или рабочие процессы в группе параллелизма, находившиеся в состоянии ожидания, будут отменены. Чтобы также отменить задание или рабочий процесс, которые сейчас выполняются в той же группе параллелизма, укажите cancel-in-progress: true
.
Примечание. Имя группы параллелизма не учитывает регистр. Например, prod
и Prod
будет рассматриваться как та же группа параллелизма.
Примеры. Использование параллелизма и поведение по умолчанию
concurrency: staging_environment
concurrency: ci-${{ github.ref }}
Пример. Использование параллелизма для отмены любого выполняющегося задания или запуска
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
Пример. Использование резервного значения
Если вы создаете имя группы со свойством, определенным только для определенных событий, можно использовать резервное значение. Например, github.head_ref
определяется только для событий pull_request
. Если рабочий процесс реагирует на другие события в дополнение к событиям pull_request
, необходимо предоставить резервное значение, чтобы избежать синтаксической ошибки. Следующая группа параллелизма отменяет выполняемые задания или запуски только в событиях pull_request
. Если параметр github.head_ref
не определен, группа параллелизма перейдет к идентификатору запуска, который будет гарантированно заданным и уникальным.
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
Пример. Отмена только выполняемых заданий или запусков для текущего рабочего процесса
При наличии нескольких рабочих процессов в одном репозитории имена групп параллелизма должны быть уникальными в разных рабочих процессах, чтобы избежать отмены выполняемых заданий или запусков из других рабочих процессов. В противном случае все ранее выполняемые или ожидающие задания будут отменены независимо от рабочего процесса.
Чтобы отменить только выполняемые запуски для одного рабочего процесса, можно использовать свойство github.workflow
для создания группы параллелизма:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true