Введение
Jenkins и GitHub Actions позволяют создавать рабочие процессы, которые автоматически выполняют сборку, тестирование, публикацию, выпуск и развертывание кода. Jenkins и GitHub Actions используют некоторые сходства в конфигурации рабочего процесса.
- Jenkins создает рабочие процессы с помощью декларативных конвейеров, которые аналогичны файлам рабочих процессов GitHub Actions.
- Jenkins использует этапы для выполнения коллекции шагов, а GitHub Actions использует задания для группирования одного или нескольких шагов или отдельных команд.
- Jenkins и GitHub Actions поддерживают сборки на основе контейнеров. Дополнительные сведения см. в разделе Создание действия контейнера Docker.
- Шаги или задачи можно повторно использовать и предоставлять сообществу.
Дополнительные сведения см. в разделе Общие сведения о GitHub Actions.
Основные различия
- Jenkins имеет два типа синтаксиса для создания конвейеров: декларативный конвейер и конвейер со скриптами. GitHub Actions использует YAML для создания рабочих процессов и файлов конфигурации. Дополнительные сведения см. в разделе Синтаксис рабочего процесса для GitHub Actions.
- Развертывания Jenkins обычно являются локальными, при этом пользователи обслуживают серверы в своих центрах обработки данных. GitHub Actions предлагает гибридный облачный подход, размещая собственные средства выполнения, которые можно использовать для выполнения заданий, а также поддерживая локальные средства выполнения. Дополнительные сведения см. в разделе О самостоятельно размещенных средствах выполнения.
Сравнение возможностей
Распространение сборок
Jenkins позволяет отправлять сборки одному агенту сборки или распределять их между несколькими агентами. Вы также можете классифицировать эти агенты в соответствии с различными атрибутами, такими как типы операционных систем.
Аналогично, GitHub Actions может отправлять задания в размещенные в GitHub или локальные средства выполнения, и вы можете с помощью меток классифицировать модули выполнения в соответствии с различными атрибутами. Дополнительные сведения см. в разделах Общие сведения о 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 |
---|---|
|
|