Установка Jenkins на CentOS

  • Михаил
  • 12 мин. на прочтение
  • 140
  • 19 Jan 2023
  • 19 Jan 2023

Jenkins — это популярный сервер автоматизации с открытым кодом, используемый для внедрения непрерывной интеграции и непрерывной доставки (CI/CD) для проектов программного обеспечения. Вы можете разместить развертывание Jenkins в Azure либо расширить имеющуюся конфигурацию Jenkins с помощью ресурсов Azure. Кроме того, можно использовать подключаемые модули Jenkins, чтобы упростить непрерывную интеграцию и непрерывную доставку приложений в Azure.

Подготовка системы

Для корректной работы Jenkins, мы выполним настройку брандмауэра и отключим SELinux.

Настройка firewalld

Подключение к порталу выполняется по порту 8080 — необходимо его открыть командой:

firewall-cmd --permanent --add-port=8080/tcp

И после перечитать правила:

firewall-cmd --reload

Отключение SELinux

Выполняем 2 команды:

setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

Инсталляция Jenkins

Как было сказано выше, мы установим openjava, сервис Jenkins и завершим развертывания на портале. Итого, 3 этапа.

1. Установка openjdk

Выполняем команду:

yum install java-11-openjdk-devel

Выбираем директорию для java по умолчанию с помощью утилиты update-alternatives:

update-alternatives --config java

И на запрос:

  Selection    Command 
----------------------------------------------- 
*+ 1           java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.9.11-0.el8_2.x86_64/bin/java)

... выбираем единственно предложенный вариант:

Enter to keep the current selection[+], or type selection number: 1

* если в системе установлено несколько версий java, выбираем актуальную.

Готово. Смотрим версию установленной java:

java -version

Мы должны увидеть что-то на подобие:

openjdk version "11.0.9" 2020-10-20 LTS 
OpenJDK Runtime Environment 18.9 (build 11.0.9+11-LTS) 
OpenJDK 64-Bit Server VM 18.9 (build 11.0.9+11-LTS, mixed mode, sharing)

2. Установка Jenkins

Для установки сервиса Jenkins добавляем репозиторий:

wget -P /etc/yum.repos.d/ https://pkg.jenkins.io/redhat-stable/jenkins.repo

Импортируем публичный ключ для подключения к репозиторию:

rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

Устанавливаем jenkins:

yum install jenkins

Разрешаем автозапуск и стартуем сервис:

systemctl enable jenkins
systemctl start jenkins

3. Завершение установки

Открываем браузер и переходим по адресу http://:8080 — откроется окно «Unlock Jenkins». В нем будет путь до файла, в котором нужно взять парольную фразу для разблокировки портала:

И так, на сервере вводим команду:

cat /var/lib/jenkins/secrets/initialAdminPassword

* где /var/lib/jenkins/secrets/initialAdminPassword — полный путь до файла, который отображен на стартовой странице установки.

Мы должны увидеть что-то на подобие:

# cat /var/lib/jenkins/secrets/initialAdminPassword 
35635dce8b014707a2ec90937763cfe3

Используем данный пароль и вставляем его в поле Administrator password:

В следующем окне выбираем вариант установки плагинов — рекомендованные или по выбору:

* если мы не слишком хорошо знакомы с продуктом, выбираем рекомендованные плагины.

Начнется процесс развертывания Jenkins:

После создаем учетную запись для администратора:

На последней странице мы можем задать URL-адрес для нашего портала (или оставить IP-адрес):

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

Другие способы установки

Кратко, рассмотрим другие методы установки Jenkins.

1. Docker

Если Docker не установлен в системе, выполняем инсталляцию.

После загружаем контейнеры для Jenkins: 

docker pull jenkins/jenkins

Запускаем контейнер:

docker run -p 8080:8080 --name=jenkins-master jenkins/jenkins:latest

На экране мы должны увидеть код для разблокировки Jenkins. Копируем его, открываем в браузере страницу http://:8080 и выполняем установку в веб, как это делали выше.

После выполнения установки прерываем работу контейнера в интерактивном режиме комбинацией Ctrl + С и запускаем его в бэкграунде:

docker start jenkins-master

2. Установка из файла WAR

Загружаем последнюю версию war-файла:

wget -P /usr/local/bin/ http://mirrors.jenkins-ci.org/war/latest/jenkins.war

* на странице загрузки jenkins можно найти ссылку для скачивания LTS-версии файла war. Обратите внимание, что мы сразу размещаем файл в каталоге /usr/local/bin.

Запускаем war с помощью java:

java -jar /usr/local/bin/jenkins.war

На экране мы должны увидеть код для разблокировки Jenkins. Копируем его, открываем в браузере страницу http://:8080 и выполняем установку в веб, как это делали выше.

После выполнения установки прерываем работу war в интерактивном режиме комбинацией Ctrl + С.

Создаем юнит в systemd:

vi /usr/lib/systemd/system/jenkins.service

[Unit] 
Description=Jenkins Service 
After=network.target 

[Service] 
Type=simple 
User=root 
ExecStart=/usr/bin/java -jar /usr/local/bin/jenkins.war 
Restart=on-abort 
ExecReload=/bin/kill -HUP $MAINPID 

[Install] 
WantedBy=multi-user.target

Перечитываем юниты в systemcd:

systemctl daemon-reload

Разрешаем автозапуск сервиса jenkins и стартуем его:

systemctl enable jenkins --now

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

systemctl status jenkins

Работа с Jenkins в CLI

По умолчанию, необходимый для работы с Jenkins из командной строки файл jenkins-cli.jar не копируется в систему.

Его нужно скачать. Выполняем:

wget http://127.0.0.1:8080/jnlpJars/jenkins-cli.jar -P /usr/local/bin/

* таким образом, мы скачаем файл с собственного сервера и разместим его в папке /usr/local/bin/.

Теперь можно выполнять команды с синтаксисом:

java -jar /usr/local/bin/jenkins-cli.jar -auth <имя пользователя>:<пароль> -s http://127.0.0.1:8080/ <выполняемые команды и опции>

Например, получить список команд можно так:

java -jar /usr/local/bin/jenkins-cli.jar -auth admin:admin -s http://127.0.0.1:8080/ -webSocket help

* где admin:admin — логин и пароль от административной учетной записи.

Установка плагинов

Список плагинов мы можем найти на официальном сайте. Мы рассмотрим 2 способа их установки — из веб-интерфейса и командной строки.

Веб-интерфейс

Переходим в раздел Настроить Jenkins:

Затем в Управление плагинами:

Переходим к вкладке Доступные, по фильтру находим нужный нам плагин, отмечаем галочкой его установку:

Кликаем по кнопке Загрузить и установить после перезагрузки:

Будет выполнена установке плагина, после чего, портал перезапустит сервис.

CLI

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

java -jar /usr/local/bin/jenkins-cli.jar -auth admin:admin -s http://127.0.0.1:8080/ install-plugin docker-workflow

* в данном примере мы установим плагин Docker Pipeline. Обратите внимание, что его идентификатор для установки docker-workflow — посмотреть данный идентификатор можно на сайте с плагинами.

После перезапускаем сервис jenkins:

systemctl restart jenkins

Плагин установлен.

Возможные ошибки

Public key for jenkins is not installed

В процессе установки мы можем получить сообщение на подобие:

warning: /var/cache/dnf/jenkins-0919f06c02b07800/packages/jenkins-2.249.3-1.1.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID 45f2c3d5: NOKEY 
Public key for jenkins-2.249.3-1.1.noarch.rpm is not installed 
The downloaded packages were saved in cache until the next successful transaction. 
You can remove cached packages by executing 'yum clean packages'.

Причина: не импортирован публичный ключ. По умолчанию, репозиторий требует проверку gpg.

Решение: проблема может быть решена 2-я способами.

1. Импортировать публичный ключ для репозитория jenkins. Для этого выполняем команду:

rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

2. Отключаем проверку gpg. Для этого откроем настройки для репозитория:

vi /etc/yum.repos.d/jenkins.repo

Редактируем строку:

gpgcheck=0

Error: Unable to access jarfile jenkins-cli.jar

Ошибка появляется при попытке выполнить команду в jenkins-cli.

Причина: для работы команды необходим файл jenkins-cli.jar, который не устанавливается в системе.

Решение: выполняем действия по настройке системы для работы с jenkins-cli.

failed to start lsb: start jenkins at boot time

Ошибка возникаем при попытке запустить сервис jenkins.

Причина: как правило, отсутствие в системе установленного java.

Решение: устанавливаем java по инструкции выше.