Рабочие процессы с возможностью повторного использования
Вместо того, чтобы копировать и вставлять из одного рабочего процесса в другой, вы можете сделать рабочие процессы многоразовыми. После этого вы и каждый, у кого есть доступ к повторно используемому рабочему процессу, можете вызвать повторно используемый рабочий процесс из другого рабочего процесса.
Повторное использование рабочих процессов позволяет избежать дублирования. Это упрощает обслуживание рабочих процессов и позволяет быстрее создавать новые рабочие процессы, основываясь на работе других пользователей так же, как и в случае с действиями. Повторное использование рабочих процессов также способствует внедрению передового опыта, помогая вам использовать хорошо спроектированные, уже испытанные и доказавшие свою эффективность рабочие процессы. Ваша организация может создать библиотеку повторно используемых рабочих процессов, которые можно будет обслуживать централизованно.
На схеме ниже показан выполняемый рабочий процесс, использующий повторно используемый рабочий процесс.
- После успешного завершения каждого из трех заданий сборки слева от схемы выполняется зависимое задание с именем Deploy.
- Задание "Deploy" вызывает повторно используемый рабочий процесс, содержащий три задания: "Промежуточное", "Проверка" и "Рабочая среда".
- Задание развертывания "Производство" выполняется только после успешного завершения задания "Промежуточное хранение".
- Когда задание предназначено для среды, рабочий процесс отображает индикатор хода выполнения, показывающий количество шагов в задании. На схеме ниже задание "Production" содержит 8 шагов с шагом 6, который в настоящее время обрабатывается.
- Использование повторно используемого рабочего процесса для выполнения заданий развертывания позволяет выполнять эти задания для каждой сборки без дублирования кода в рабочих процессах.

Рабочий процесс, использующий другой рабочий процесс, называется "вызывающим" рабочим процессом. Повторно используемый рабочий процесс — это "вызываемый" рабочий процесс. Один вызывающий рабочий процесс может использовать несколько вызываемых рабочих процессов. Каждый вызываемый рабочий процесс упоминается в одной строке. В результате файл вызывающего рабочего процесса может содержать всего несколько строк YAML, но при запуске может выполнять большое количество задач. При повторном использовании рабочего процесса используется весь вызываемый рабочий процесс, как если бы он был частью вызывающего рабочего процесса.
Если вы повторно используете рабочий процесс из другого репозитория, любые действия в вызываемом рабочем процессе выполняются так, как если бы они были частью вызывающего рабочего процесса. Например, если вызываемый рабочий процесс использует actions/checkout, действие извлекает содержимое репозитория, в котором размещается вызывающий, а не вызываемый рабочий процесс.
Вы можете просматривать повторно используемые рабочие процессы, на которые есть ссылки в ваших рабочих процессах GitHub Actions, как зависимости в графе зависимостей репозитория, содержащего рабочие процессы. Дополнительные сведения см. в разделе Сведения о графе зависимостей.
Повторно используемые рабочие процессы и составные действия
Повторно используемые рабочие процессы и составные действия помогают избежать дублирования содержимого рабочего процесса. В то время как многократно используемые рабочие процессы позволяют повторно использовать весь рабочий процесс с несколькими заданиями и шагами, составные действия объединяют несколько шагов, которые затем можно выполнить на шаге задания, как и любое другое действие.
Давайте сравним некоторые аспекты каждого решения:
-
**Задания** рабочего процесса — составные действия содержат ряд шагов, выполняемых как один шаг в рабочем процессе вызывающего объекта. В отличие от повторно используемых рабочих процессов, они не могут содержать задания. -
**Ведение журнала** . При выполнении составного действия журнал будет отображать только шаг в рабочем процессе вызывающего объекта, который выполнял составное действие, а не отдельные шаги в составном действии. При использовании повторно используемых рабочих процессов каждое задание и шаг регистрируются отдельно. -
**Указание средств** выполнения — рабочие процессы, которые можно использовать повторно, содержат одно или несколько заданий. Как и во всех заданиях рабочих процессов, задания в повторно используемом рабочем процессе указывают тип компьютера, на котором будет выполняться задание. Таким образом, если шаги должны выполняться на типе компьютера, который может отличаться от компьютера, выбранного для вызова задания рабочего процесса, следует использовать повторно используемый рабочий процесс, а не составное действие. -
**Передача выходных данных в шаги** . Составное действие выполняется как шаг в задании рабочего процесса, и вы можете выполнить несколько шагов до или после шага, выполняющего составное действие. Повторно используемые рабочие процессы вызываются непосредственно в задании, а не из этапа задания. Вы не можете добавить шаги в задание после вызова повторно используемого рабочего процесса, поэтому нельзя использовать `GITHUB_ENV` для передачи значений последующим шагам задания в рабочем процессе вызывающего объекта.
Основные различия между повторно используемыми рабочими процессами и составными действиями
| Рабочие процессы с возможностью повторного использования | Составные действия |
|---|---|
| ФАЙЛ YAML, очень похожий на любой стандартный файл рабочего процесса | Действие, содержащее пакет шагов рабочего процесса |
Каждый повторно используемый рабочий процесс — это один файл в .github/workflows каталоге репозитория. | Каждое составное действие представляет собой отдельный репозиторий или каталог, содержащий action.yml файл и, при необходимости, другие файлы |
| Вызывается путем ссылки на определенный ФАЙЛ YAML | Вызывается путем ссылки на репозиторий или каталог, в котором определено действие. |
| Вызывается непосредственно в задании, а не из шага | Запуск в качестве шага в задании |
| Может содержать несколько заданий | Не содержит заданий |
| Каждый шаг регистрируется в режиме реального времени | Регистрировался как один шаг, даже если он содержит несколько шагов |
| Можно подключить максимум four уровней рабочих процессов | Можно вложить до 10 составных действий в одном рабочем процессе. |
| Может использовать секреты | Не удается использовать секреты |
| Нельзя опубликовать на рынке | Можно опубликовать на рынке |
Шаблоны рабочих процессов
Шаблоны рабочих процессов позволяют всем пользователям в организации, имеющим разрешение на создание рабочих процессов, сделать это быстрее и проще. Когда пользователи создают новый рабочий процесс, они могут выбрать шаблон рабочего процесса, а некоторые или все действия по написанию рабочего процесса будут выполнены для них. В шаблоне рабочего процесса можно также ссылаться на многократно используемые рабочие процессы, чтобы упростить использование пользователями повторно управляемого кода рабочего процесса.
Если при ссылке на повторно используемый рабочий процесс используется SHA фиксации, вы можете убедиться, что каждый, кто повторно использует этот рабочий процесс, всегда будет использовать один и тот же код YAML. Однако если вы ссылаетесь на повторно используемый рабочий процесс с помощью тега или ветви, убедитесь, что вы можете доверять этой версии рабочего процесса. Дополнительные сведения см. в разделе Справочник по безопасному использованию.
GitHub предлагает шаблоны рабочих процессов для различных языков и инструментов. При настройке рабочих процессов в репозитории GitHub анализирует код в репозитории и рекомендует рабочие процессы на основе языка и платформы в репозитории. Например, если вы используете Node.js, GitHub предложит файл шаблона рабочего процесса, который устанавливает пакеты Node.js и запускает тесты. Вы можете искать и фильтровать соответствующие шаблоны рабочих процессов.
GitHub предоставляет готовые шаблоны рабочих процессов для следующих категорий высокого уровня:
-
Непрерывное развертывание (CD). Дополнительные сведения см. в разделе Непрерывное развертывание.
-
Непрерывная интеграция (CI). Дополнительные сведения см. в разделе Непрерывная интеграция.
-
Автоматизация. Шаблоны рабочих процессов автоматизации предлагают решения для автоматизации рабочих процессов, таких как три запроса на вытягивание и применение метки на основе путей, измененных в запросе на вытягивание, или приветствия пользователей, которые впервые входят в репозиторий.
Используйте эти рабочие процессы в качестве отправного места для создания пользовательского рабочего процесса или их использования как есть. Полный список шаблонов рабочих процессов можно просмотреть в репозитории действий и начальных рабочих процессов.
Дополнительные сведения см. в разделе Создание шаблонов рабочих процессов для организации.
Следующие шаги
Чтобы начать повторное использовать рабочие процессы, см. раздел Повторное использование рабочих процессов.
Дополнительные сведения об повторном использовании рабочих процессов см. в разделе Повторное использовать конфигурации рабочих процессов.