Установка Jenkins на Debian/Ubuntu
Jenkins — это популярный open-source сервер автоматизации, который широко используется для организации CI/CD (непрерывной интеграции и доставки). Он позволяет запускать сборки, тесты и деплой автоматически при изменении кода.
1. Что такое Jenkins?
Jenkins — это Java-приложение с веб-интерфейсом, предназначенное для автоматизации задач в процессе разработки:
- Автоматическая сборка проектов
- Запуск юнит и интеграционных тестов
- Деплой в тестовые/прод окружения
- Отправка уведомлений о статусе
- Интеграция с Git, Docker, Kubernetes, Slack и др.
Особенности Jenkins:
- Плагинная архитектура (более 1800 плагинов)
- Великая гибкость в настройке пайплайнов
- Веб-интерфейс для управления джобами
- Скриптинг на Groovy (Pipeline-as-Code)
2. Установка Jenkins на Debian/Ubuntu
Шаг 1: Обновление системы
1sudo 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) |
1sudo apt install openjdk-17-jdk -y
Проверьте версию:
1java -version
Или ставим 21 версию если необходимо
1wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.deb
2dpkg -i jdk-21_linux-x64_bin.deb
Если версий джава несколько, то можно выбрать конкретную
1update-alternatives --config java
Добавляем переменные
/etc/environment
1JAVA_HOME="/usr/lib/jvm/jdk-21.0.5-oracle-x64"
2PATH="$PATH:$JAVA_HOME/bin"
1source /etc/environment
Шаг 3: Добавление репозитория Jenkins
1wget -O /usr/share/keyrings/jenkins-keyring.asc https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
2echo "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
1sudo apt update
2sudo apt install jenkins -y
Шаг 5: Запуск и автозапуск Jenkins
1sudo systemctl enable jenkins
2sudo systemctl start jenkins
Проверьте статус:
1sudo systemctl status jenkins
Шаг 6: Открытие порта 8080 (если используется firewall)
1sudo ufw allow 8080
Шаг 7: Начальная настройка
Откройте браузер и перейдите по адресу:
http://<ваш-сервер>:8080
Введите пароль администратора, полученный из файла:
1sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Затем вы сможете установить рекомендуемые плагины и создать первого пользователя.
3. Настройка nginx
jenkins.conf
1upstream jenkins {
2 keepalive 32;
3 server 127.0.0.1:8080;
4}
5
6map $http_upgrade $connection_upgrade {
7 default upgrade;
8 '' close;
9}
10
11server {
12 listen 80;
13 server_name jenkins.example.com;
14
15 return 301 https://$host$request_uri;
16}
17
18server {
19 listen 443 ssl;
20 server_name jenkins.example.com;
21
22 ssl_certificate /etc/letsencrypt/live/jenkins.example.com/fullchain.pem;
23 ssl_certificate_key /etc/letsencrypt/live/jenkins.example.com/privkey.pem;
24 ssl_protocols TLSv1.2 TLSv1.3;
25 ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256';
26
27 root /var/run/jenkins/war/;
28
29 access_log /var/log/nginx/jenkins.access.log;
30 error_log /var/log/nginx/jenkins.error.log;
31
32 ignore_invalid_headers off;
33
34 location ~ "^/static/[0-9a-fA-F]{8}\/(.*)$" {
35 rewrite "^/static/[0-9a-fA-F]{8}\/(.*)" /$1 last;
36 }
37
38 location /userContent {
39 root /var/lib/jenkins/;
40 if (!-f $request_filename){
41 rewrite (.*) /$1 last;
42 break;
43 }
44 sendfile on;
45 }
46 location / {
47 sendfile off;
48 proxy_pass http://jenkins;
49 proxy_redirect default;
50 proxy_http_version 1.1;
51
52 proxy_set_header Connection $connection_upgrade;
53 proxy_set_header Upgrade $http_upgrade;
54
55 proxy_set_header Host $http_host;
56 proxy_set_header X-Real-IP $remote_addr;
57 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
58 proxy_set_header X-Forwarded-Proto $scheme;
59 proxy_max_temp_file_size 0;
60
61 #this is the maximum upload size
62 client_max_body_size 10m;
63 client_body_buffer_size 128k;
64
65 proxy_connect_timeout 90;
66 proxy_send_timeout 90;
67 proxy_read_timeout 90;
68 proxy_request_buffering off;
69 }
70
71}
4. Настройка
Настраиваем потребление памяти в параметре -Xmx3072m
(3 Гб)
/etc/default/jenkins
1JENKINS_JAVA_OPTIONS="-Xms512m -Xmx3072m"
Logout таймауты
/lib/systemd/system/jenkins.service
1Environment="JENKINS_OPTS=--sessionTimeout=86400 --sessionEviction=86400"
Заключение
Теперь Jenkins установлен и готов к работе. Следующий шаг — настройка джобов и пайплайнов под ваши проекты.