Введение
Jenkins и GitHub Actions позволяют создавать рабочие процессы, которые автоматически выполняют сборку, тестирование, публикацию, выпуск и развертывание кода. Jenkins и GitHub Actions используют некоторые сходства в конфигурации рабочего процесса.
- Jenkins создает рабочие процессы с помощью декларативных конвейеров, которые аналогичны файлам рабочих процессов GitHub Actions.
- Jenkins использует этапы для выполнения коллекции шагов, а GitHub Actions использует задания для группирования одного или нескольких шагов или отдельных команд.
- Jenkins и GitHub Actions поддерживают сборки на основе контейнеров. Дополнительные сведения см. в разделе Creating a Docker container action.
- Шаги или задачи можно повторно использовать и предоставлять сообществу.
Дополнительные сведения см. в разделе Understanding GitHub Actions.
Основные различия
- Jenkins имеет два типа синтаксиса для создания конвейеров: декларативный конвейер и конвейер со скриптами. GitHub Actions использует YAML для создания рабочих процессов и файлов конфигурации. Дополнительные сведения см. в разделе Workflow syntax for GitHub Actions.
- Развертывания Jenkins обычно являются локальными, при этом пользователи обслуживают серверы в своих центрах обработки данных. GitHub Actions предлагает гибридный облачный подход, размещая собственные средства выполнения, которые можно использовать для выполнения заданий, а также поддерживая локальные средства выполнения. Дополнительные сведения см. в разделе О самостоятельно размещенных средствах выполнения.
Сравнение возможностей
Распространение сборок
Jenkins позволяет отправлять сборки одному агенту сборки или распределять их между несколькими агентами. Вы также можете классифицировать эти агенты в соответствии с различными атрибутами, такими как типы операционных систем.
Аналогично, GitHub Actions может отправлять задания в размещенные в GitHub или локальные средства выполнения, и вы можете с помощью меток классифицировать модули выполнения в соответствии с различными атрибутами. Дополнительные сведения см. в разделах Understanding GitHub Actions и О самостоятельно размещенных средствах выполнения.
Использование разделов для упорядочения конвейеров
Jenkins разделяет свои декларативные конвейеры на несколько разделов. Аналогично, GitHub Actions упорядочивает рабочие процессы по отдельным разделам. В приведенной ниже таблице сравниваются разделы Jenkins с рабочим процессом GitHub Actions.
| Директивы Jenkins | GitHub Actions |
|---|---|
agent | jobs.<job_id>.runs-on jobs.<job_id>.container |
post | |
stages | jobs |
steps | jobs.<job_id>.steps |
Директивы using
Jenkins использует директивы для управления декларативными конвейерами. Эти директивы определяют характеристики рабочего процесса и порядок его выполнения. В приведенной ниже таблице показано, как эти директивы соответствуют концепциям в GitHub Actions.
Использование последовательных этапов
Обработка параллельных заданий
Jenkins может выполнять stages и steps параллельно, в то время как GitHub Actions в настоящее время выполняет задания только параллельно.
| Параллельное выполнение в Jenkins | GitHub Actions |
|---|---|
parallel | jobs.<job_id>.strategy.max-parallel |
Матрица
И GitHub Actions, и Jenkins позволяют использовать матрицу сборки для определения различных системных сочетаний.
| Jenkins | GitHub Actions |
|---|---|
axis | strategy/matrix context |
stages | steps-context |
excludes |
Выполнение задач с помощью шагов
Jenkins группирует steps в stages. Каждый из этих шагов может быть, помимо прочего, скриптом, функцией или командой. Аналогично, GitHub Actions использует jobs для выполнения определенных групп steps.
| Jenkins | GitHub Actions |
|---|---|
steps | jobs.<job_id>.steps |
Примеры распространенных задач
Планирование запуска конвейера с помощью cron
| Конвейер Jenkins | Рабочий процесс GitHub Actions |
|---|---|
|
|
Настройка переменных среды в конвейере
| Конвейер Jenkins | Рабочий процесс GitHub Actions |
|---|---|
|
|
Выполнение сборки из вышестоящих проектов
| Конвейер Jenkins | Рабочий процесс GitHub Actions |
|---|---|
|
|
Выполнение сборки с несколькими операционными системами
| Конвейер Jenkins | Рабочий процесс GitHub Actions |
|---|---|
|
|