Установка Jenkins на CentOS
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 по инструкции выше.
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.