Сравнение Jenkins и GitLab CI
1. Детальное сравнение
| Команда | Jenkins | GitLab CI |
|---|---|---|
| Pipeline | Jenkinsfile | .gitlab-ci.yml |
| Формат | Groovy | YAML |
| Исполнитель | Jenkins Agent | Gitlab Runner |
| Где хранится код | Git вместе с проектом | Git вместе с проектом |
| Связь с Git | через плагины | нативная |
| Merge Request | Нужно интегрировать | нативная часть pipeline |
| Registry | Отдельный | GitLab Container Registry |
| Secrets | Jenkins Credentials | CI/CD Variables |
| Артефакты | Jenkins artifacts/plugins | Встроенные artifacts |
| Расписание | Есть | Есть pipeline scheduller |
| Manual job | Есть | when: manual |
| Условия запуска | when, Groovy | rules: |
| Расширяемость | Огромная экосистема плагинов | Возможности GitLab + внешние инструменты |
| Kubernetes | Можно интегрировать | Нативных возможностей вокруг CI/CD больше |
2. Архитектура
Jenkins
Jenkins имеет клиент-серверную архитектуру (master & slave).
Для использования Jenkins нужно выполнить обязательную установку ПО Jenkins на сервер и по необходимости подключать к нему Jenkins Agent (slave) которые будут выполнять задачи полученные от Master ноды Jenkins.
У меня есть automation-сервер, которому я могу приказать выполнить практически какой угодно workflow.
GitLab CI
Gitlab CI имеет веб приложение под капотом полностью интегрированное c GitLab (централизованным хранилищем кода)
Для работы нужно только наличие runner (аналог Jenkins slave нод), так как GitLab выступает сам в роли master.
У меня есть GitLab-проект, и я описываю, что должно происходить с кодом
GitLab
├── Repository
├── Merge Request
├── Container Registry
├── CI/CD
│
└──── job
↓
GitLab Runner
Последняя проверка 18.09.2026