Установка Jenkins в Unix/Linux

Установка Jenkins в Unix/Linux

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

В своей статье «Установка Jenkins в Unix/Linux» я расскажу как можно установить Jenkins в Unix/Linux на примере CentOS 6/7 и Debian 8.

Установка Jenkins на Debian’s.

Для установки дженкинс на  deb’s ОС, выполните ряд действий:

# cd /usr/local/src && wget -q -O - https://jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
# sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'

Обновляем репозиторий и устанавливаем jenkins:

# apt-get update && apt-get install jenkins

Обновление

После установки, вы можете обновить дженкинс до более поздней версии (когда он выйдет), выполнив следующие команды. Для начала, обновляем ОС:

# apt-get update

Далее:

# apt-get install jenkins

PS: Используйте aptitude или apt-get нет никакой разницы.

Что этот пакет делает?

  • Jenkins будет запущен как демон при запуске. Смотрите /etc/init.d/jenkins для более подробной информации.
  • Пользователь ‘jenkins’ создан, чтобы запустить эту службу.
  • Log файл будет разпологаться в /var/log/jenkins/jenkins.log. Проверьте этот файл при возникновении ошибок с Jenkins.
  • /etc/default/jenkinsбудет захватывать параметры конфигурации для запуска, например JENKINS_HOME
  • По умолчанию, Дженкинс слушает 8080 порт. Используйте этот порт чтобы начать настройку.
  • Если ваш файл /etc/init.d/jenkins не запускает Дженкинс, отредактируйте /etc/default/jenkins  и замените HTTP_PORT=8080 на HTTP_PORT=8081 (как пример).

Здесь был выбран 8081 порт, но вы можете использовать любой другой не используемый порт.

Развертывание на Ubuntu в облако (EC2, HP Cloud, OpenStack)

На убунту,  дженкинс поддерживает сценарий развертывания / управления Juju для развертывания в облаках, можно использовать:

# juju deploy jenkins
# juju deploy -n 5 jenkins-slave
# juju add-relation jenkins jenkins-slave

По умолчанию пароль для аккаунта ‘Admin’ будет автоматически генерироваться. Вы можете установить его с помощью:

# juju set jenkins password=my_password

Всегда меняйте это так — это учетная запись используется charm для управления slave конфигурацией. По этому, не забывайте выставить свой master дженкинс:

# juju expose jenkins

Использование iptables для проброса 80 порта -> 8080-й

Это позволяет переадресацию трафика между портами 80 и 8080. Вы можете сохранить дженкинс на порт 8080 по умолчанию, а доступ к нему будите получать по нормальному URL без установки каких-либо дополнительных, для этого, выполним изменения:

# vim /etc/rc.local

Добавляем запросы снаружи:

# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

можно еще пробросить 443-й порт:

# iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 3443

Добавляем запросы c localhost:

# iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080

можно еще пробросить 443-й порт:

# iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 443 -j REDIRECT --to-ports 3443

PS: Порты 3443 и 8080 могут отличаться от вашей конфигурации. По этому, будьте внимательны!

После этого выполните перезапуск ОС или выполните:

# /etc/rc.local

Настройка Apache Proxy для порта 80 -> 8080

Эта конфигурация установит Apache2 с прокси с 80 на 8080, так что вы можете держать дженкинс на 8080:

# aptitude install apache2

И потом:

# a2enmod proxy
# a2enmod proxy_http

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

# a2dissite default

Если вы получите ОШИБКУ: по умолчанию сайта не существует! (ERROR: Site default does not exist!) попробуйте это:

# a2dissite 000-default

И если у вас не получается и сейчас, то посмотрите, есть  ли конфиг по умолчанию для вашего сайта:

# ls /etc/apache2/sites-enabled/

Создайте файл конфигурации jenkins.conf в /etc/apache2/sites-available:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName ci.linux-notes.org
ServerAlias ci
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost on
ProxyPass / http://localhost:8080/ nocanon
AllowEncodedSlashes NoDecode
</VirtualHost>

После чего, выполните:

# a2ensite jenkins
# apache2ctl restart

Настройка Nginx прокси на порт 80 -> 8080

Данная конфигурация, установит Nginx с прокси с 80 на 8080, так что вы можете держать дженкинс на 8080:

# aptitude -y install nginx

Удаляем стандартный конфиг:

# cd /etc/nginx/sites-available
# rm default ../sites-enabled/default

Создать новую конфигурацию для Дженкинса. Этот пример использует утилиту cat, но вы можете использовать ваш любимый текстовый редактор. Не забудьте заменить домен «ci.yourlinux-notes.org»:

sudo cat > jenkins
upstream app_server {
server 127.0.0.1:8080 fail_timeout=0;
}

server {
listen 80;
listen [::]:80 default ipv6only=on;
server_name ci.linux-notes.org;

location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;

if (!-f $request_filename) {
proxy_pass http://app_server;
break;
}
}
}
^D # Нажмите CTRL + D, чтобы дописать файл

Создаем ссылку на конфигурацию sites-available в sites-enabled:

# ln -s /etc/nginx/sites-available/jenkins /etc/nginx/sites-enabled/

Перезапускаем Nginx:

# service nginx restart

Установка Jenkins на RedHat’s.

В RPM-дистрибутивах, такими как Red Hat Enterprise Linux (RHEL), CentOS, Fedora или Scientific Linux, вы можете установить Дженкинс через Yum.

Установка Jenkins в RPM’s ОС

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

# cd /usr/local/src && wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo

Импортируем ключ:

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

После чего, выполняем установку jenkins:

# yum install jenkins -y

Установка стабильной версии

Существует также хранилище LTS YUM репозиторий для LTS релиза. При необходимости, используйте:

# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo

Импортируем ключ:

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

И производим установку:

# yum install jenkins -y

PS: Возможно вампотребуется установить:

$ yum install dejavu-sans-fonts fontconfig xorg-x11-server-Xvfb -y

Идем дальше….

Установка Java

Для Jenkins требует Java, по этому, необходимо установить Java Development (OpenJDK). Это можно сделать так:

# yum install java -y

Проверяем версию  java:

$ java -version
java version "1.7.0_85"
OpenJDK Runtime Environment (rhel-2.6.1.3.el6_7-x86_64 u85-b01)
OpenJDK 64-Bit Server VM (build 24.85-b03, mixed mode)

Если не последняя стабильная версия java, то ее нужно удалить и установить новую:

# yum remove java

После того как Вы удалили Java. Вы должны установить совместимую версию Java. Самый простой подход с использованием OpenJDK, который доступен через репозиторий EPEL, по этому, установим OpenJDK:

# yum install java-1.7.0-openjdk

Запуск\Остановка\Перезапуск Jenkins

Чтобы запустить Jenkins используйте:

# service jenkins start

Чтобы остановить Jenkins используйте:

# service jenkins stop

Чтобы перезаупстить Jenkins используйте:

# service jenkins restart

Так же, можно добавить дженкинс в автозагрузку ОС:

# chkconfig jenkins on

Что этот пакет делает?

  • Jenkins будет запущен как демон при запуске. Смотрите /etc/init.d/jenkins для более подробной информации.
  • Пользователь ‘jenkins’ создан, чтобы запустить эту службу.Если вы измените его на другого пользователя через конфигурационный файл, вы должны изменить владельца в /var/log/jenkins, /var/lib/jenkins, и /var/cache/jenkins.
  • Log файл будет разпологаться в /var/log/jenkins/jenkins.log. Проверьте этот файл при возникновении ошибок с Jenkins.
  • /etc/sysconfig/jenkins будет захватывать параметры конфигурации для запуска.
  • По умолчанию, Дженкинс слушает 8080 порт.  Используйте этот порт чтобы начать настройку. Обратите внимание, что встроенный межсетевой экран, возможно будет блокировать соединения с других компьютеров (можно ознакомиться с отключением тут: Отключение Firewall в RHEL/CentOS /RedHat).
  • A Jenkins RPM хранилище добавляется в /etc/yum.repos.d/jenkins.repo

Отключение firewall

# firewall-cmd --zone=public --add-port=8080/tcp --permanent
# firewall-cmd --zone=public --add-service=http --permanent
# firewall-cmd --reload
# firewall-cmd --list-all

Или:

# iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# iptables -I INPUT -p tcp -m tcp --dport 8080 -j ACCEPT

Двигаемяс дальше.

Использование jenkins

Т.к jenkins работает на 8080м порту, то открываем в браузере, у меня это выглядит так:

jenkins начало

jenkins начало

В настоящее время установка является небезопасной и каждый может получить к нему доступ. Сейчас мы это исправим! Во-первых, перейти к Управление Дженкинс «Manage Jenkins» (в левом меню) нажмите кнопку «Setup Security» на странице, загруженной:

Настройка безопастности в дженкинс

Настройка безопастности в дженкинс

Идем далее, в открывшемся окне, выставляем следующее:

Настройка Global Security в дженкинс

Настройка Global Security в дженкинс

Т.е включаем «security by checking» и выставялем чтобы дженкинс использовал «Jenkins’s own user database» и disable sign ups (можно оставить на момент тестирования или для пробной установки. Если никогда не работали с jenkins, то не выключайте данную опцию).

Далее, выставляем «Matrix-based security»:

выставляем "Matrix-based security"

выставляем «Matrix-based security»

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

Нажмите кнопку сохранить в нижней части страницы. После загрузки страницы, вы увидите форму входа, игнорируйте ее  и откройте jenkins.linux-notes.org:8080 (у меня это IP адрес):

настройка входа в jenkins

настройка входа в jenkins

Вводим свои данные (логин, пароль, имя и почтовый адрес) и нажимаем «Sing up». Вы попадаете в начальное меню и у вас будет защищен вход в панель дженкинс.

Добавление своей первой работы (First Job) в jenkins

Теперь, когда все настроено и работает, пришло время создать нашу первую работу. Нажмите ссылку «New Job»:

создание первой работы в дженкинс

создание первой работы в дженкинс

Прописываем следующие:

создание первой работы

создание первой работы

Нажмите «ОК» и переходим на следующую страницу, добавить «Execute shell build «:

Execute shell build

В поле «Command», пропишите «uptime»:

создание работы uptime в дженкинс

Нажмите кнопку Сохранить (Save) в нижней части экрана. После этого, нажмите кнопку Построить сейчас (Build Now):

построение созданной работы в дженкинс

Нажимаем на синий кружочек:

вывод действий на экран

И получаем:

вывод консоли

Создание расписаний (графика) вашей работу в дженкинс

Дженкинс может запустить работу по требованию или в определенный момент времени. Теперь, когда мы создали основную сборку, пришло время настроить расписание сборки. Во-первых, нажмите на ссылку «back to project», чтобы вернуться к просмотру работы:

back to project

После того, как вы вернулись на обзор, нажмите кнопку «Configure»:

configure в jenkins

Это приводит вас к странице конфигурации, как было показано при первой настройке вашей работы. Теперь посмотрим «Build Triggers» и проверить «Build» периодичность:

Build Triggers

 

 

Теперь это поле ввода принимает CRONTAB синтаксис. Есть несколько специальных дополнительных услуг, которые приходят с Дженкинс планировщиком. Наведите на синий знак вопроса справа от поля ввода, чтобы выяснить, что именно они означают.

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

Существует большое количество плагинов для Дженкинса. Я собираюсь установить плагин, который будет отслеживать дисковое пространство. Для начала, перейдите в «Manage Jenkins» снова. И нажмите на «Manage Plugins»:

установка плагинов в дженкинс

установка плагинов в дженкинс

Ищем нужный плагин, выполняем установку и используем его. Ничего сложного, не буду заострять внимание на этом.

На этом, тема «Установка Jenkins в Unix/Linux» завершена. Постараюсь выкладывать новый материал.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.