Note
GitHubразмещенные в данный момент средства выполнения не поддерживаются в GitHub Enterprise Server. Дополнительные сведения о планируемой поддержке в будущем см. в GitHub public roadmap.
Обзор
Запуск рабочего процесса состоит из одного или нескольких jobs
, которые по умолчанию выполняются параллельно. Для последовательного выполнения заданий можно определить зависимости в других заданиях с помощью ключевого слова jobs.<job_id>.needs
.
Каждое задание выполняется в среде средства выполнения тестов, указанной в параметре runs-on
.
Вы можете выполнять неограниченное количество заданий, если вы не превышаете лимиты по использованию рабочих процессов. Дополнительные сведения см. в разделе "[AUTOTITLE" для GitHubразмещенных в среде runner и autoTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#usage-limits) для ограничения использования локального runner.
Если требуется найти уникальный идентификатор задания, выполняемого в ходе выполнения рабочего процесса, можно использовать API GitHub Enterprise Server. Дополнительные сведения см. в разделе Конечные точки REST API для действий GitHub.
Задание идентификатора для задания
Используйте jobs.<job_id>
, чтобы назначить заданию уникальный идентификатор. Ключ job_id
представляет собой строку, а значение ключа представляет собой карту данных конфигурации задания. Необходимо заменить <job_id>
строкой, уникальной для объекта jobs
. <job_id>
должен начинаться с буквы или _
и может включать только буквенно-цифровые символы -
или _
.
Пример. Создание заданий
В этом примере были созданы два задания, и их job_id
равны my_first_job
и my_second_job
.
jobs:
my_first_job:
name: My first job
my_second_job:
name: My second job
Присвоение имени заданию
Используйте jobs.<job_id>.name
для присвоения имени заданию, которое отображается в пользовательском интерфейсе GitHub.
Определение требуемых заданий
Используйте jobs.<job_id>.needs
для определения всех заданий, которые должны быть успешно завершены перед выполнением этого задания. Это может быть строка или массив строк. Если задание завершается ошибкой или пропускается, все задания, необходимые для него, пропускаются, если задания не используют условное выражение, которое приводит к продолжению задания. Если выполнение содержит ряд заданий, которые нуждаются друг в другом, сбой или пропуск применяется ко всем заданиям в цепочке зависимостей из точки сбоя или пропускания. Если вы хотите выполнить задание, даже если задание зависит от не удалось, используйте условное always()
выражение в jobs.<job_id>.if
.
Пример. Необходимо успешное выполнение зависимых заданий
jobs:
job1:
job2:
needs: job1
job3:
needs: [job1, job2]
В этом примере задание job1
должно успешно завершить работу перед началом задания job2
, а задание job3
ожидает завершения заданий job1
и job2
.
Задания в этом примере выполняются последовательно:
job1
job2
job3
Пример. Успешное выполнение зависимых заданий не требуется
jobs:
job1:
job2:
needs: job1
job3:
if: ${{ always() }}
needs: [job1, job2]
В этом примере в задании job3
используется условное выражение always()
, чтобы оно всегда выполнялось после завершения выполнения заданий job1
и job2
, независимо от того, завершились ли они успешно. Дополнительные сведения см. в разделе Оценка выражений в рабочих процессах и действиях.