Установка и настройка Jenkins на Ubuntu 22.04
TL;DR
Jenkins — сервер автоматизации для CI/CD. В статье показано, как установить Jenkins на Ubuntu 22.04: установить JDK, добавить репозиторий Jenkins, установить пакет, открыть порт 8080, получить начальный пароль и выполнить базовую настройку. Включены рекомендации по безопасности, отладке и альтернативные варианты установки.
Что такое Jenkins и зачем он нужен
Jenkins — это свободный сервер автоматизации с открытым исходным кодом, ориентированный на сборку, тестирование и развёртывание приложений (CI/CD). Он работает с любыми языками и репозиториями, поддерживает конвейеры (pipelines) и расширяется через плагины. Сообщество Jenkins поддерживает около 1 500 плагинов для интеграции с системами сборки, облаками и инструментами наблюдения.
Краткое определение: Jenkins — сервер автоматизации для создания конвейеров CI/CD.
Важно: Jenkins написан на Java и требует JDK (версии 8 или 11) для запуска.
Кому пригодится эта инструкция
- DevOps- и SRE-инженерам, которые настраивают CI/CD на Ubuntu 22.04.
- Разработчикам, которым нужно локально развернуть Jenkins.
- Инженерам, выбирающим способ развертывания: система-пакет, Docker или snap.
Требования перед установкой
Проверьте, что ваша система соответствует минимальным требованиям:
- Ubuntu 22.04 (сервер или рабочая станция)
- SSH-доступ к серверу
- Непривилегированный пользователь с sudo
- Доступ к командной строке Ubuntu
- Минимум 256 МБ ОЗУ для одиночной инсталляции
- Рекомендуется 1 ГБ дискового пространства для одиночного использования
- При работе в Docker — минимум 10 ГБ диска
- Для командной работы: 4 ГБ+ ОЗУ и 50 ГБ+ диска
- Java Development Kit (JDK) 8 или 11
- NGINX или Apache, если планируете настроить обратный прокси и TLS
Если всё в порядке — можно продолжать.
Шаги установки Jenkins на Ubuntu 22.04
Ниже — проверенная последовательность действий. Команды выполняются от имени пользователя с правами sudo.
Шаг 1 — установить JDK 11
Jenkins запускается на JVM, поэтому нужен JDK или JRE. Рекомендуется JDK 11.
Обновите систему и установите JDK:
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y openjdk-11-jdkПроверьте установку:
java -versionОжидаемый вывод: OpenJDK 11 (или аналогичная строка с версией 11).
Шаг 2 — добавить репозиторий Jenkins и установить пакет
Добавьте ключ репозитория и сам источник пакетов Jenkins:
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
sudo apt-get install -y jenkinsПри установке подтвердите установку, введя Y, если будет запрос.
Шаг 3 — запустить и проверить сервис Jenkins
Запустите сервис и проверьте статус:
sudo systemctl start jenkins.service
sudo systemctl status jenkinsЕсли всё в порядке, systemd покажет состояние Active: active (running).
Шаг 4 — открыть порт в межсетевом экране (UFW)
По умолчанию Jenkins слушает порт 8080. Разрешите доступ к 8080 и сохраните доступ по SSH:
sudo ufw allow OpenSSH
sudo ufw allow 8080/tcp
sudo ufw enable
sudo ufw statusПроверьте, что в выводе присутствует правило для порта 8080.
Совет: в публичных окружениях рекомендуется ограничить доступ к 8080 через брандмауэр, VPN или установить обратный прокси с TLS.
Шаг 5 — доступ к веб-интерфейсу Jenkins
Откройте в браузере:
- http://IP-адрес:8080
- или http://localhost:8080 (если вы на той же машине)
Чтобы разблокировать начальную установку, потребуется пароль администратора, хранящийся в /var/lib/jenkins/secrets/initialAdminPassword.
Получить пароль можно так:
sudo cat /var/lib/jenkins/secrets/initialAdminPasswordИли, если вы предпочитаете интерактивный редактор:
sudo -i
nano /var/lib/jenkins/secrets/initialAdminPasswordСкопируйте код и вставьте его в поле Administrator password на веб-странице Jenkins, затем нажмите Continue.
Базовая настройка после входа
После первого входа Jenkins предложит установить плагины и создать учётную запись администратора.
Установка рекомендуемых плагинов
Нажмите Install suggested plugins (Установить рекомендуемые плагины). Это ускорит начальную интеграцию с основными инструментами.
Во время установки вы увидите прогресс:
Создание администратора
После установки плагинов заполните форму создания первого пользователя: имя, пароль, e‑mail.
Нажмите Save and Continue, затем Start using Jenkins, чтобы перейти к Dashboard.
Как удалить Jenkins с Ubuntu
Если нужно полностью удалить Jenkins и конфигурацию:
sudo apt remove --purge jenkins
sudo apt autoremove --purge
sudo rm -rf /var/lib/jenkins /var/log/jenkins /etc/default/jenkinsУчтите: последние команды удалят все данные Jenkins, включая плагины и задачи.
Рекомендации по безопасности и эксплуатации
- Запускайте Jenkins под отдельным системным пользователем (это стандарт для пакета jenkins).
- Используйте обратный прокси (NGINX/Apache) и TLS (Let’s Encrypt) для шифрования трафика.
- Включите аутентификацию и роль‑базированную авторизацию (Matrix Authorization Strategy).
- Отключите анонимный доступ и ограничьте установку плагинов через UI для предотвращения атаки цепочки поставок.
- Регулярно резервируйте /var/lib/jenkins (директория с конфигурацией и данными).
Пример простого конфига NGINX для обратного прокси с TLS (сокращённый):
server {
listen 80;
server_name jenkins.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name jenkins.example.com;
ssl_certificate /etc/letsencrypt/live/jenkins.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/jenkins.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Отладка и частые проблемы
- Проблема: страница не открывается по адресу http://IP:8080
- Проверьте systemctl status jenkins и журналы в /var/log/jenkins/jenkins.log
- Убедитесь, что UFW/облако/провайдер не блокирует порт 8080
- Проблема: при старте Jenkins не поднимается
- Проверьте версию Java: java -version. Jenkins требует JDK 8 или 11
- Проверьте права на /var/lib/jenkins — пользователь jenkins должен иметь доступ
- Проблема: плагины долго устанавливаются или падают
- Проверьте соединение с интернетом и прокси. Для закрытых окружений установите плагины вручную или локальный update center
Краткая команда для просмотра последних строк лога:
sudo journalctl -u jenkins -n 200 --no-pager
sudo tail -n 200 /var/log/jenkins/jenkins.logАльтернативные способы установки
- Docker: удобно для изолированного тестирования и CI в контейнере.
- Пример: docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
- Snap: sudo snap install jenkins — упрощает установку, но даёт меньше контроля над системой.
- Ручная сборка WAR: java -jar jenkins.war — полезно в нестандартных окружениях.
Выбор метода зависит от требований: для продакшена часто выбирают пакетную установку + reverse proxy или контейнеризацию с оркестрацией.
Чеклисты по ролям
Администратор (быстрый чеклист):
- Установлен JDK 11
- Jenkins запущен как сервис systemd
- Открыт доступ для необходимых IP/портов
- Настроен обратный прокси и TLS
- Создана административная учётная запись
- Включено резервное копирование /var/lib/jenkins
DevOps-инженер (быстрый чеклист):
- Создан pipeline в Jenkinsfile
- Настроен агент (node) для сборки
- Подключены репозитории (Git, GitHub/GitLab)
- Настроены уведомления (Slack, почта)
Разработчик (быстрый чеклист):
- Имеется Jenkinsfile в репозитории
- Триггеры для сборок (push, PR) настроены
- Артефакты собираются и доступны для деплоя
Критерии приёмки установки
- Jenkins отвечает на http(s) запросы на ожидаемом хосте
- Начальная страница разблокирована с верным initialAdminPassword
- Установлены и активны рекомендуемые плагины
- Создана первая учётная запись администратора
- Резервная копия /var/lib/jenkins выполнена
Краткая методология миграции и обновления
- Сделать резервную копию /var/lib/jenkins и конфигов NGINX.
- Проверить совместимость плагинов с новой версией Jenkins на тестовой инсталляции.
- Обновлять Jenkins в окне технического обслуживания; сначала backup, затем apt upgrade jenkins.
- Проверить работоспособность конвейеров и агентов.
- Откат: восстановить бэкап /var/lib/jenkins, перезапустить сервис.
Контрольные сценарии (тесты приёмки)
- При установке Jenkins сервис должен перейти в состояние active в течение 60 секунд после start.
- После ввода initialAdminPassword браузер должен показать страницу установки плагинов.
- После настройки обратного прокси сайт по HTTPS должен возвращать 200 OK и корректные заголовки X-Forwarded-*.
Когда Jenkins может не подойти (контрпримеры)
- Очень лёгкие проекты без CI/CD — overhead будет избыточным.
- Если требуется нативная интеграция с облачной CI (например, managed CI с глубокими интеграциями), имеет смысл рассмотреть SaaS-решения.
- Для исключительно контейнерных рабочих процессов бывает проще использовать Kubernetes-native инструменты (Tekton, GitHub Actions для некоторых задач).
Итог
Jenkins остаётся гибким и расширяемым решением для CI/CD. На Ubuntu 22.04 установка и начальная настройка занимают несколько шагов: установка JDK, добавление репозитория, установка пакета, открытие порта 8080, получение initialAdminPassword и базовая конфигурация через веб-интерфейс. После этого стоит настроить обратный прокси с TLS, политику доступа и резервное копирование.
Если нужны примеры Jenkinsfile, конфиги NGINX для разных сценариев или образцы ролей и политик безопасности — приложу дополнительно.
Краткое резюме
- Jenkins быстро развернуть на Ubuntu 22.04 и интегрировать с большинством инструментов.
- Всегда используйте обратный прокси и TLS в продакшен-средах.
- Резервные копии и контроль плагинов критичны для устойчивости.