Skip to main content

Использование заданий в рабочем процессе

Использование рабочих процессов для выполнения нескольких заданий.

Обзор

Запуск рабочего процесса состоит из одного или нескольких 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. Дополнительные сведения см. в разделе Конечные точки 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.

Задания в этом примере выполняются последовательно:

  1. job1
  2. job2
  3. job3

Пример. Успешное выполнение зависимых заданий не требуется

jobs:
  job1:
  job2:
    needs: job1
  job3:
    if: ${{ always() }}
    needs: [job1, job2]

В этом примере в задании job3 используется условное выражение always(), чтобы оно всегда выполнялось после завершения выполнения заданий job1 и job2, независимо от того, завершились ли они успешно. Дополнительные сведения см. в разделе Выражения.