Установка Jenkins на Debian/Ubuntu
Table of contents

Jenkins — это популярный open-source сервер автоматизации, который широко используется для организации CI/CD (непрерывной интеграции и доставки). Он позволяет запускать сборки, тесты и деплой автоматически при изменении кода.
1. Что такое Jenkins?
Jenkins — это Java-приложение с веб-интерфейсом, предназначенное для автоматизации задач в процессе разработки:
- Автоматическая сборка проектов
- Запуск юнит и интеграционных тестов
- Деплой в тестовые/прод окружения
- Отправка уведомлений о статусе
- Интеграция с Git, Docker, Kubernetes, Slack и др.
Особенности Jenkins:
- Плагинная архитектура (более 1800 плагинов)
- Великая гибкость в настройке пайплайнов
- Веб-интерфейс для управления джобами
- Скриптинг на Groovy (Pipeline-as-Code)
2. Установка Jenkins на Debian/Ubuntu
Шаг 1: Обновление системы
sudo apt update && sudo apt upgrade -yШаг 2: Установка Java (Jenkins работает на Java)
| Supported Java versions | Long term support (LTS) release | Weekly release |
|---|---|---|
| Java 17 or Java 21 | 2.479.1 (October 2024) | 2.463 (June 2024) |
| Java 11, Java 17, or Java 21 | 2.426.1 (November 2023) | 2.419 (August 2023) |
| Java 11 or Java 17 | 2.361.1 (September 2022) | 2.357 (June 2022) |
| Java 8, Java 11, or Java 17 | 2.346.1 (June 2022) | 2.340 (March 2022) |
| Java 8 or Java 11 | 2.164.1 (March 2019) | 2.164 (February 2019) |
| Java 8 | 2.60.1 (June 2017) | 2.54 (April 2017) |
| Java 7 | 1.625.1 (October 2015) | 1.612 (May 2015) |
sudo apt install openjdk-17-jdk -yПроверьте версию:
java -versionИли ставим 21 версию если необходимо
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.deb
dpkg -i jdk-21_linux-x64_bin.debЕсли версий джава несколько, то можно выбрать конкретную
update-alternatives --config javaДобавляем переменные
/etc/environment
JAVA_HOME="/usr/lib/jvm/jdk-21.0.5-oracle-x64"
PATH="$PATH:$JAVA_HOME/bin"source /etc/environmentШаг 3: Добавление репозитория Jenkins
wget -O /usr/share/keyrings/jenkins-keyring.asc https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc]" https://pkg.jenkins.io/debian-stable binary/ | tee /etc/apt/sources.list.d/jenkins.list > /dev/nullШаг 4: Установка Jenkins
sudo apt update
sudo apt install jenkins -yШаг 5: Запуск и автозапуск Jenkins
sudo systemctl enable jenkins
sudo systemctl start jenkinsПроверьте статус:
sudo systemctl status jenkinsШаг 6: Открытие порта 8080 (если используется firewall)
sudo ufw allow 8080Шаг 7: Начальная настройка
Откройте браузер и перейдите по адресу:
http://<ваш-сервер>:8080Введите пароль администратора, полученный из файла:
sudo cat /var/lib/jenkins/secrets/initialAdminPasswordЗатем вы сможете установить рекомендуемые плагины и создать первого пользователя.
3. Настройка nginx
jenkins.conf
upstream jenkins {
keepalive 32;
server 127.0.0.1:8080;
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
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;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256';
root /var/run/jenkins/war/;
access_log /var/log/nginx/jenkins.access.log;
error_log /var/log/nginx/jenkins.error.log;
ignore_invalid_headers off;
location ~ "^/static/[0-9a-fA-F]{8}\/(.*)$" {
rewrite "^/static/[0-9a-fA-F]{8}\/(.*)" /$1 last;
}
location /userContent {
root /var/lib/jenkins/;
if (!-f $request_filename){
rewrite (.*) /$1 last;
break;
}
sendfile on;
}
location / {
sendfile off;
proxy_pass http://jenkins;
proxy_redirect default;
proxy_http_version 1.1;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $http_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;
proxy_max_temp_file_size 0;
#this is the maximum upload size
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_request_buffering off;
}
}4. Настройка
Настраиваем потребление памяти в параметре -Xmx3072m (3 Гб)
/etc/default/jenkins
JENKINS_JAVA_OPTIONS="-Xms512m -Xmx3072m"Logout таймауты
/lib/systemd/system/jenkins.service
Environment="JENKINS_OPTS=--sessionTimeout=86400 --sessionEviction=86400"Теперь Jenkins установлен и готов к работе. Следующий шаг — настройка джобов и пайплайнов под ваши проекты.