Данная статья предназначена для тех, кто искал подробное и понятное руководство о том, как установить Jenkins на Ubuntu Server.

Jenkins - это программная система с открытым исходным кодом на Java, предназначенная для обеспечения процесса непрерывной интеграции программного обеспечения.

В этом руководстве мы будем рассматривать тот случай, когда у вас уже есть сервер с установленной на нем операционной системой Ubuntu Server 20.04 LTS.

Подробно о том, как установить Ubuntu Server 20.04 LTS, вы можете прочитать в моем руководстве “Установка Ubuntu Server 20.04 LTS”.

Кроме того, на сервер должен быть установлен OpenSSH, а также открыт 22 порт, чтобы иметь возможность подключаться к серверу по протоколу SSH.

Для установки OpenSSH на сервер вы можете воспользоваться командой:

sudo apt install openssh-server

Если вы планируете подключиться к серверу, используя операционную систему Windows, то можете воспользоваться PuTTY - свободно распространяемым клиентом для различных протоколов удаленного доступа, включая SSH, Telnet, rlogin.

В данном руководстве рассматривается подключение к серверу при помощи терминального эмулятора iTerm2, установленного на операционную систему macOS.

Обратите внимание, вам потребуется открыть следующие порты TCP для доступа к вашему серверу:

  • 80 - для получения бесплатного криптографического сертификата через центр сертификации Let’s Encrypt.
  • 443 - для доступа к веб-интерфейсу Jenkins.

Подключаемся к серверу, на который планируется установить Jenkins.

Для получения и последующего обновления бесплатного SSL-сертификата мы будем использовать центр сертификации Let’s Encrypt, а также программный клиент Certbot, который призван максимально упростить получение и обновление сертификата через центр сертификации Let’s Encrypt.

Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:

sudo apt update

Установка Jenkins на Ubuntu Server

Теперь установим пакеты, необходимые для работы Jenkins, с помощью команды:

sudo apt install -y apache2 apt-transport-https certbot python3-certbot-apache openjdk-11-jdk

Обратите внимание, в данном руководстве в качестве веб-сервера будет использоваться Apache.

Обратите внимание, проверить поддерживаемые версии Java вы можете перейдя по ссылке.

Установка Jenkins на Ubuntu Server

Многие программы, написанные с использованием Java, используют переменную среды “JAVA_HOME” для определения места установки Java. Поэтому необходимо определить эту переменную и присвоить ей значение, содержащее путь к месту установки Java.

Определим путь к месту установки Java с помощью команды:

sudo update-alternatives --config java

Установка Jenkins на Ubuntu Server

В данном примере путь к месту установки Java выглядит так:

/usr/lib/jvm/java-11-openjdk-amd64/bin/

Для того чтобы определить переменную среды и присвоить ей значение, нужно внести изменения в файл “environment”, открыв его в текстовом редакторе с помощью команды:

sudo vim /etc/environment

Установка Jenkins на Ubuntu Server

Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, затем в конце файла определяем новую переменную “JAVA_HOME” и присваиваем ей значение, содержащее путь к месту установки Java, полученное ранее.

JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64/bin/"

Обратите внимание, путь к месту установки Java нужно указать до папки “bin” включительно.

Установка Jenkins на Ubuntu Server

Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.

Установка Jenkins на Ubuntu Server

Далее необходимо применить внесенные изменения к текущей сессии с помощью команды:

source /etc/environment

Установка Jenkins на Ubuntu Server

Теперь убедимся, что переменная среды имеет корректное значение, с помощью команды:

echo $JAVA_HOME

Установка Jenkins на Ubuntu Server

Судя по полученному сообщению, переменная среды имеет корректное значение.

Настроим Apache для последующей работы с панелью управления Jenkins.

Включаем модуль веб-сервера Apache под названием “headers” с помощью команды:

sudo a2enmod headers

Обратите внимание, модуль “headers” можно использовать для добавления более специфических параметров “Cache-Control”.

Установка Jenkins на Ubuntu Server

Включаем модуль веб-сервера Apache под названием “proxy_http” с помощью команды:

sudo a2enmod proxy_http

Обратите внимание, модуль “proxy_http” выполняет функции прокси-сервера для протоколов HTTP и HTTPS.

Установка Jenkins на Ubuntu Server

Включаем модуль веб-сервера Apache под названием “rewrite” с помощью команды:

sudo a2enmod rewrite

Обратите внимание, модуль “rewrite” является одним из самых часто используемых модулей веб-сервера Apache и предоставляет гибкий и мощный способ манипулирования URL-адресами.

Установка Jenkins на Ubuntu Server

Теперь нужно создать два файла виртуальных хостов (в Nginx называется блок), с которыми в дальнейшем будет работать Jenkins.

Два файла виртуальных хостов потребуются для обеспечения доступа к Jenkins по HTTPS, а также для реализации возможности использования Jenkins по адресу https://jenkins.heyvaldemar.net, без указания порта 8080 в адресной строке браузера.

В данном руководстве для доступа к Jenkins из сети Интернет будет использоваться субдомен jenkins.heyvaldemar.net. Вам нужно будет указать ваш домен или субдомен, по которому ваш Jenkins будет доступен из сети Интернет.

Создадим первый файл виртуального хоста, воспользовавшись текстовым редактором, с помощью команды:

sudo vim /etc/apache2/sites-available/jenkins.heyvaldemar.net.conf

Установка Jenkins на Ubuntu Server

Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, затем вставляем следующую конфигурацию для работы веб-сервера.

В данном руководстве для доступа к Jenkins из сети Интернет будет использоваться субдомен jenkins.heyvaldemar.net. Вам нужно будет указать ваш домен или субдомен, по которому ваш Jenkins будет доступен из сети Интернет.

Установка Jenkins на Ubuntu Server

Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.

Установка Jenkins на Ubuntu Server

Создадим второй файл виртуального хоста, воспользовавшись текстовым редактором, с помощью команды:

sudo vim /etc/apache2/sites-available/jenkins.heyvaldemar.net-ssl.conf

Установка Jenkins на Ubuntu Server

Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, затем вставляем следующую конфигурацию для работы веб-сервера.

В данном руководстве для доступа к Jenkins из сети Интернет будет использоваться субдомен jenkins.heyvaldemar.net. Вам нужно будет указать ваш домен или субдомен, по которому ваш Jenkins будет доступен из сети Интернет.

Установка Jenkins на Ubuntu Server

Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.

Установка Jenkins на Ubuntu Server

Активируем первый виртуальный хост с помощью команды:

sudo a2ensite jenkins.heyvaldemar.net.conf

Установка Jenkins на Ubuntu Server

Активируем второй виртуальный хост с помощью команды:

sudo a2ensite jenkins.heyvaldemar.net-ssl.conf

Установка Jenkins на Ubuntu Server

Деактивируем виртуальный хост, созданный по умолчанию, с помощью команды:

sudo a2dissite 000-default.conf

Установка Jenkins на Ubuntu Server

Убедимся, что в синтаксисе нового конфигурационного файла Apache нет ошибок, с помощью команды:

sudo apache2ctl configtest

Установка Jenkins на Ubuntu Server

Перезапустим Apache, чтобы применить внесенные изменения, с помощью команды:

sudo systemctl restart apache2

Установка Jenkins на Ubuntu Server

Проверим, что Apache успешно запустился, с помощью команды:

sudo systemctl status apache2

Установка Jenkins на Ubuntu Server

Теперь, чтобы повысить уровень безопасности веб-сервера, необходимо получить криптографический сертификат для домена или субдомена, по которому панель управления Jenkins будет доступна из сети Интернет.

Для получения и последующего обновления бесплатного SSL-сертификата мы будем использовать центр сертификации Let’s Encrypt, а также программный клиент Certbot, который призван максимально упростить получение и обновление сертификата через центр сертификации Let’s Encrypt.

В данном руководстве для доступа к Jenkins из сети Интернет будет использоваться субдомен jenkins.heyvaldemar.net. Вам нужно будет указать ваш домен или субдомен, по которому ваш Jenkins будет доступен из сети Интернет.

Запросим криптографический сертификат с помощью команды:

sudo certbot --apache -d jenkins.heyvaldemar.net

Установка Jenkins на Ubuntu Server

Далее указываем адрес электронной почты, на который Let’s Encrypt будет присылать уведомления об истечении срока криптографического сертификата, и нажимаем на кнопку “Enter”.

Установка Jenkins на Ubuntu Server

На следующем этапе необходимо прочитать и принять условия использования предоставляемых сервисов.

Нажимаем на кнопку “a”, затем “Enter”, если вы согласны с условиями использования предоставляемых сервисов.

Установка Jenkins на Ubuntu Server

На следующем этапе необходимо выбрать: хотите ли вы поделиться указанным ранее адресом электронной почты с Electronic Frontier Foundation для получения информационных рассылок.

Нажимаем на кнопку “n”, затем “Enter”.

Установка Jenkins на Ubuntu Server

На следующем этапе необходимо выбрать: хотите ли вы, чтобы в конфигурационный файл Apache были автоматически добавлены параметры для автоматического перенаправления HTTP-трафика на HTTPS.

Нажимаем на кнопку “2”, затем “Enter”.

Установка Jenkins на Ubuntu Server

Обратите внимание, криптографические сертификаты, полученные через центр сертификации Let’s Encrypt, действительны в течение девяноста дней. Certbot автоматически добавляет скрипт для обновления сертификата в планировщик задач, и скрипт запускается два раза в день, автоматически обновляя любой криптографический сертификат, срок действия которого истекает в течение тридцати дней.

Проверить работоспособность процесса обновления криптографического сертификата можно с помощью команды:

sudo certbot renew --dry-run

Установка Jenkins на Ubuntu Server

Теперь добавим официальный ключ Jenkins с помощью команды:

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -

Установка Jenkins на Ubuntu Server

Далее подключаем репозиторий Jenkins с помощью команды:

sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'

Установка Jenkins на Ubuntu Server

Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:

sudo apt update

Установка Jenkins на Ubuntu Server

Теперь установим Jenkins с помощью команды:

sudo apt install -y jenkins

Установка Jenkins на Ubuntu Server

Теперь необходимо внести изменения в конфигурационный файл Jenkins, открыв его в текстовом редакторе с помощью команды:

sudo vim /etc/default/jenkins

Установка Jenkins на Ubuntu Server

Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, находим строку JENKINS_ARGS=”–webroot=/var/cache/$NAME/war –httpPort=$HTTP_PORT” и добавляем параметр –httpListenAddress=127.0.0.1.

Установка Jenkins на Ubuntu Server

Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.

Установка Jenkins на Ubuntu Server

Перезапустим Jenkins, чтобы применить внесенные изменения, с помощью команды:

sudo systemctl restart jenkins

Установка Jenkins на Ubuntu Server

Проверим, что Jenkins успешно запустился, с помощью команды:

sudo systemctl status jenkins

Установка Jenkins на Ubuntu Server

Теперь необходимо получить пароль, который потребуется для разблокировки Jenkins.

Получить пароль можно с помощью команды:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Установка Jenkins на Ubuntu Server

Сохраните полученный пароль, так как он понадобится на следующем шаге.

Для продолжения процесса установки Jenkins необходимо с рабочей станции перейти по ссылке https://jenkins.heyvaldemar.net, где jenkins.heyvaldemar.net - имя моего сервера. Соответственно, вам необходимо указать имя или IP-адрес вашего сервера Jenkins.

Далее необходимо указать пароль для разблокировки Jenkins.

В поле “Administrator password” указываем ранее полученный пароль для разблокировки Jenkins и нажимаем на кнопку “Continue”.

Установка Jenkins на Ubuntu Server

Теперь можно выбрать, какие плагины установить для Jenkins.

В данном руководстве, мы будем рассматривать установку предлагаемых плагинов для Jenkins.

Нажимаем на кнопку “Install suggested plugins”.

Установка Jenkins на Ubuntu Server

Начался процесс установки плагинов.

Установка Jenkins на Ubuntu Server

На следующем шаге необходимо указать: логин, пароль имя и адрес электронной почты для создания учетной записи администратора Jenkins.

Нажимаем на кнопку “Save and Continue”.

Установка Jenkins на Ubuntu Server

В поле “Jenkins URL” указываем домен или субдомен, по которому ваш Jenkins доступен из сети Интернет.

В данном руководстве для доступа к Jenkins из сети Интернет будет использоваться субдомен jenkins.heyvaldemar.net. Вам нужно будет указать ваш домен или субдомен, по которому ваш Jenkins будет доступен из сети Интернет.

Нажимаем на кнопку “Save and Finish”.

Установка Jenkins на Ubuntu Server

Установка Jenkins успешно завершена.

Нажимаем на кнопку “Start using Jenkins”.

Установка Jenkins на Ubuntu Server

Все готово для использования Jenkins.

Установка Jenkins на Ubuntu Server

Владимир Михалев
Привет, я Владимир Михалев, но друзья зовут меня Вальдемарыч. Я обладаю практическим опытом проектирования и сопровождения различных информационных систем.