Установка Java
1 |
# apt-get update && apt-get install default-jdk |
1 |
# update-alternatives --config java |
1 2 |
There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java Nothing to configure. |
1 |
# nano /etc/environment |
1 |
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64" |
1 |
# source /etc/environment |
1 |
# echo $JAVA_HOME |
1 |
/usr/lib/jvm/java-8-openjdk-amd64 |
Установка Jenkins
1.Добавление ключа и репозитария в apt
1 |
# wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - |
1 |
OK |
1 |
# sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' |
2.Обновление кеша пакетов
1 |
# apt-get update |
3.Устанавка Jenkins
1 |
# apt-get install jenkins |
Jenkins по умолчанию доступен на порту 8080
http://servername:8080
Если необходимо использовать другой порт, то изменяем в файле /etc/default/jenkins
1 |
# nano /etc/default/Jenkins |
1 2 3 |
# port for HTTP connector (default 8080; disable with -1) HTTP_PORT=8888 |
Файл с базовыми настройками Jenkins
1 |
# grep -vE '^$|^#' /etc/default/jenkins |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
NAME=jenkins JAVA=/usr/bin/java JAVA_ARGS="-Djava.awt.headless=true" JAVA_ARGS="-Djava.net.preferIPv4Stack=true" PIDFILE=/var/run/$NAME/$NAME.pid JENKINS_USER=$NAME JENKINS_GROUP=$NAME JENKINS_WAR=/usr/share/$NAME/$NAME.war JENKINS_HOME=/var/lib/$NAME RUN_STANDALONE=true JENKINS_LOG=/var/log/$NAME/$NAME.log MAXOPENFILES=8192 HTTP_PORT=8080 PREFIX=/$NAME JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT" |
4.Настройка аутентификации для доступа к Jenkins
1 |
http://<servername>:8080 -> Jenkins->Настроить Jenkins->Configure Global Security |
Настраиваем Jenkins на использование своей базы данных Jenkins’ own user database
И запрещаем регистрацию пользователей(проверяем,что отключен checkbox) Allow users to sign up
В колонке Authorization выбираем Matrix-based security и даем право только чтение(Read) в категории просмотр (View) пользователю Anonymous
(это право необходимо для корректной работы Jenkins)
Также добавляем полный доступ для пользователя,под которым мы зарегистрировались в Jenkins
Если Jenkins не пускает в систему,необходимо отключить защиту в конфигурационном файле Jenkins
1 |
# nano /var/lib/jenkins/config.xml |
изменив
1 |
<useSecurity>true</useSecurity> |
на
1 |
<useSecurity>false</useSecurity> |
и перезапустив Jenkins
1 |
# service jenkins restart |
После чего нужно продолжить настройку параметров входа и прав доступа
https://jenkins.io/doc/book/system-administration/security/
5.Создание нового проекта
Теперь, когда все установлено и запущено, можно приступить к созданию нового проекта
Имя проекта — uptime
1 |
New job->Job name –uptime->Build a free-style software project->OK |
Добавляем выполение команды uptime
1 |
Add build step -> Execute shell->Command – uptime->Save |
Собираем сборку и просматриваем результат
1 |
Build now->Build history нажимаем на синий круг->Console Output |
1 |
Started by user UserNameBuilding in workspace /var/lib/jenkins/workspace/uptime[uptime] $ /bin/sh -xe /tmp/hudson2288542035673782808.sh+ uptime 13:30:03 up 1:45, 5 users, load average: 0.01, 0.07, 0.10Finished: SUCCESS |
6.Добавление выполнения сборки по расписанию
После установки основной сборки можно добавить ее на выполнение в расписание Jenkins
Jenkins позволяет запускать проекты по требованию или в определенное время
1 |
Back to project->Configure->Build Triggers->Build periodically |
Синтаксис совместим с синтаксисом Cron
Например, выставляем выполнение задания дважды в сутки и сохраняемся
1 |
0 */12 * * * |
7.Установка плагинов Jenkins
Jenkins имеет большое количество различных плагинов, начиная инструментами сборки и заканчивая FTP and SSH. Например, установим плагин, который отслеживает дисковое пространство, используемое для сборки и проектов. Этот плагин поможет найти «пожирателей пространства».
1 |
Jenkins->Manage Jenkins->Manage Plugins->Available->Disk Usage Plugin->Install without restart |
Это довольно простой плагин, не нуждающийся в конфигурации, но есть и такие плагины, (например, плагин SSH), которые требуют некоторой настройки перед началом работы.
8.Настройка Nginx-проксирования для Jenkins 80->8080
1 |
# nano /etc/nginx/conf.d/jenkins.kamaok.org.us.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
upstream app_server { server 127.0.0.1:8080 fail_timeout=0; } server { listen <External_server_IP_address>:80; server_name jenkins.kamaok.org.us; error_log /var/log/nginx/jenkins-error.log; access_log /var/log/nginx/jenkins-access.log main; location / { auth_basic "Authentication required to use Jenkins"; auth_basic_user_file /etc/nginx/.htpasswdjenkins; allow 127.0.0.1; allow <MY_IP_Adress>; deny all; satisfy any; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_read_timeout 90s; if (!-f $request_filename) { proxy_pass http://app_server; break; } } } |
1 |
# htpasswd -c /etc/nginx/.htpasswdjenkins username |
Jenkins перевешиваем на прослушивание только 127.0.0.1
1 |
# nano /etc/default/jenkins |
1 |
JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpListenAddress=127.0.0.1 --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT" |
1 |
# nginx –t |
1 |
# service nginx reload |
1 |
# service jenkins restart |
Важно!
Обязательно проверить,чтобы jenkins URL, который указан в Jenkins→Manage Jenkins→Configure System совпадал с тем,какой указан в строке браузера
http://jenkins.kamaok.org.us
Добавление поддержки SSL для вирт.хоста jenkins в Nginx
Установка Certbot
1 |
# apt-get update |
1 |
# apt-get install software-properties-common |
1 |
# add-apt-repository ppa:certbot/certbot |
1 |
# apt-get update |
1 |
# apt-get install python-certbot-nginx |
Получение сертификата
1 |
# certbot certonly --nginx -d jenkins.kamaok.org.us -d www.jenkins.kamaok.org.us --non-interactive --agree-tos --email myname@mydomain.com |
Настройка Nginx на поддержку SSL-сертификата
1 |
# nano /etc/nginx/conf.d/jenkins.lxc.kamaok.org.ua.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
... server { listen 80; server_name jenkins.kamaok.org.us www.jenkins.kamaok.org.us; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name jenkins.kamaok.org.us www.jenkins.kamaok.org.us; ssl_certificate /etc/letsencrypt/live/jenkins.kamaok.org.us/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/jenkins.kamaok.org.us/privkey.pem; include /etc/nginx/ssl.conf; ... |
1 |
# nginx -t && service nginx reload |
Важно!
Обязательно проверить,чтобы jenkins URL, который указан в Jenkins→Manage Jenkins→Configure System совпадал с тем,какой указан в строке браузера
https://jenkins.kamaok.org.us/
Настройка автопродления сертификатов
1 |
# crontab -e |
1 2 |
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 05 3 1 */2 * /usr/bin/certbot renew --force-renewal >> /var/log/letsencrypt/jenkins.kamaok.org.us-renew.log |
Источник:
https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu
https://wiki.jenkins.io/display/JENKINS/Jenkins+says+my+reverse+proxy+setup+is+broken
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-jenkins-on-ubuntu-12-04
https://www.rosehosting.com/blog/install-jenkins-on-an-ubuntu-14-04-vps/