Skip to main content

Предотвращение дублирования

Можно использовать повторно используемые рабочие процессы или составные действия, чтобы избежать дублирования содержимого рабочих процессов.

Сведения о повторно используемых рабочих процессах и составных действиях

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

Многократно используемые рабочие процессы позволяют повторно использовать весь рабочий процесс, включая все его задания и шаги. Это особенно полезно, если у вас есть полный процесс CI/CD, который вы хотите использовать в нескольких репозиториях. Многократно используемые рабочие процессы можно централизованно поддерживать в одном расположении, но использовать во многих репозиториях в организации.

Составные действия позволяют объединить несколько шагов в одно действие. Затем этот пакет шагов можно запустить как один шаг в рабочем процессе. Это полезно, если у вас есть последовательность шагов, которые будут использоваться в нескольких рабочих процессах. Составные действия позволяют рефакторинг длинных файлов рабочих процессов YAML в гораздо меньшие файлы избежать копирования и вставки между файлами рабочих процессов.

Повторно используемые рабочие процессы и составные действия решают аналогичные проблемы, но имеют несколько важных различий. Большую часть времени можно использовать любое решение. Но в течение некоторого времени вам потребуется использовать одну или другую, как описано далее в этой статье.

Дополнительные сведения о создании и использовании повторно используемых рабочих процессов и составных действий см. в разделе "[AUTOTITLE" иПовторное использование рабочих процессов](/actions/creating-actions/creating-a-composite-action)".

Сравнение повторно используемых рабочих процессов и составных действий

  • Задания рабочего процесса — составные действия содержат ряд шагов, которые выполняются как один шаг в рабочем процессе вызывающего объекта. В отличие от повторно используемых рабочих процессов, они не могут содержать задания.
  • Ведение журнала . При выполнении составного действия журнал будет отображать только шаг в рабочем процессе вызывающего объекта, который выполнял составное действие, а не отдельные шаги в составном действии. При использовании повторно используемых рабочих процессов каждое задание и шаг регистрируются отдельно.
  • Указание средств выполнения — рабочие процессы, которые можно использовать повторно, содержат одно или несколько заданий. Как и во всех заданиях рабочих процессов, задания в повторно используемом рабочем процессе указывают тип компьютера, на котором будет выполняться задание. Таким образом, если шаги должны выполняться на типе компьютера, который может отличаться от компьютера, выбранного для вызова задания рабочего процесса, следует использовать повторно используемый рабочий процесс, а не составное действие.
  • Передача выходных данных в шаги . Составное действие выполняется как шаг в задании рабочего процесса, и вы можете выполнить несколько шагов до или после шага, выполняющего составное действие. Повторно используемые рабочие процессы вызываются непосредственно в задании, а не из этапа задания. Вы не можете добавить шаги в задание после вызова повторно используемого рабочего процесса, поэтому нельзя использовать GITHUB_ENV для передачи значений последующим шагам задания в рабочем процессе вызывающего объекта.

Основные различия между повторно используемыми рабочими процессами и составными действиями

Рабочие процессы с возможностью повторного использованияСоставные действия
ФАЙЛ YAML, очень похожий на любой стандартный файл рабочего процессаДействие, содержащее пакет шагов рабочего процесса
Каждый повторно используемый рабочий процесс — это один файл в .github/workflows каталоге репозитория.Каждое составное действие представляет собой отдельный репозиторий или каталог, содержащий action.yml файл и, при необходимости, другие файлы
Вызывается путем ссылки на определенный ФАЙЛ YAMLВызывается путем ссылки на репозиторий или каталог, в котором определено действие.
Вызывается непосредственно в задании, а не из шагаЗапуск в качестве шага в задании
Может содержать несколько заданийНе содержит заданий
Каждый шаг регистрируется в режиме реального времениРегистрировался как один шаг, даже если он содержит несколько шагов
Может подключаться не более четырех уровней рабочих процессовМожно вложить до 10 составных действий в одном рабочем процессе.
Может использовать секретыНе удается использовать секреты
Может использовать if: условные условияНе удается использовать if: условные условия