UNIXAWESOME

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

#jenkins #cicd

Jenkins — это популярный open-source сервер автоматизации, который широко используется для организации CI/CD (непрерывной интеграции и доставки). Он позволяет запускать сборки, тесты и деплой автоматически при изменении кода.

1. Что такое Jenkins?

Jenkins — это Java-приложение с веб-интерфейсом, предназначенное для автоматизации задач в процессе разработки:

Особенности Jenkins:

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 установлен и готов к работе. Следующий шаг — настройка джобов и пайплайнов под ваши проекты.

Reply to this post by email ↪