Пример создания Continuous Integration/Continuous Delivery процесса для проекта, написанного на Java, c использованием Docker За основу был взят репозитарий, форкнутый с https://github.com/nikhilpathania/hello-world-greeting и его реализация в книге Learning Continuous Integration with Jenkins 2nd Edition by Nikhil Pathania Здесь доступен оригинальный код автора книги https://github.com/PacktPublishing/Learning-Continuous-Integration-with-Jenkins-Second-Edition Все подготовительные работы(установка и интеграция Jenkins,Maven,SonarQube,Nexus) были выполнены в предыдущих статьях: […]
Записи с меткой ‘nexus’
Jenkins: создание Continuous Integration/Continuous delivery процесса в Jenkins для проекта Java с использованием Docker
Jenkins: создание Continuous Integration/Continuous delivery процесса в Jenkins для проекта Java
Пример создания Continuous Integration/Continuous Delivery процесса для проекта, написанного на Java За основу был взят репозитарий, форкнутый с https://github.com/mitesh51/spring-petclinic и его реализация в книге Jenkins Essentials.2nd edition by Mitesh Soni Все подготовительные работы(установка и интеграция Jenkins,Maven,SonarQube,Nexus) были выполнены в предыдущих статьях: Установка и настройка Jenkins,Maven,SonarQube,Nexus на Centos 7 Установка и настройка SonarQube на Ubuntu 16 […]
Установка Nexus и создание Docker-репозитария на Ubuntu16
Установка 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 |
Установка Nexus
1 |
# wget http://download.sonatype.com/nexus/3/latest-unix.tar.gz |
1 |
# tar xvf latest-unix.tar.gz -C /opt/ |
1 |
# ln -s /opt/nexus-* /opt/nexus |
1 |
# useradd -m -r -s /bin/false nexus |
1 |
# chown -R nexus:nexus /opt/nexus-* /opt/sonatype-work /opt/nexus |
1 |
# nano /opt/nexus/bin/nexus.rc |
1 |
run_as_user="nexus" |
1 |
# nano /etc/systemd/system/nexus.service |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[Unit] Description=nexus service After=network.target [Service] Type=forking ExecStart=/opt/nexus/bin/nexus start ExecStop=/opt/nexus/bin/nexus stop User=nexus Restart=on-abort [Install] WantedBy=multi-user.target |
1 |
# systemctl daemon-reload && systemctl enable nexus |
1 |
# systemctl start nexus && systemctl status nexus |
Логи смотрим в
1 |
# tail -f /opt/sonatype-work/nexus3/log/*.log |
Настройка ротации логов Nexus
1 |
# cat /etc/logrotate.d/nexus |
1 2 3 4 5 6 7 8 9 10 |
/opt/sonatype-work/nexus3/log/*.log { daily dateext copytruncate missingok rotate 3 compress delaycompress notifempty } |
Установка Nginx
1 |
# wget -q -O - https://nginx.org/keys/nginx_signing.key | apt-key add - |
1 |
# nano /etc/apt/sources.list.d/nginx.list |
1 2 |
deb http://nginx.org/packages/ubuntu/ xenial nginx deb-src http://nginx.org/packages/ubuntu/ xenial nginx |
1 |
# apt-get update && apt-get install nginx |
1 |
# systemctl enable nginx && systemctl start nginx |
Настройка проксирования Nginx на Nexus
1 |
# nano /etc/nginx/conf.d/nexus.mydomain.com.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
upstream nexus_server { server 127.0.0.1:8081 fail_timeout=0; } server { listen 80; server_name nexus.mydomain.com www.nexus.mydomain.com; error_log /var/log/nginx/nexus-error.log; access_log /var/log/nginx/nexus-access.log main; location / { proxy_redirect off; proxy_pass http://nexus_server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 90; } } |
1 |
# nano /etc/nginx/ssl.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
ssl_session_cache shared:SSL:20m; ssl_session_timeout 1d; ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; ssl_dhparam /etc/nginx/ssl/dhparam.pem; # ssl_ecdh_curve secp521r1; ## Improves TTFB by using a smaller SSL buffer than the nginx default ssl_buffer_size 8k; ## Enables OCSP stapling ssl_stapling on; resolver 8.8.8.8; ssl_stapling_verify on; ## Send header to tell the browser to prefer https to http #add_header Strict-Transport-Security max-age=31536000; |
1 |
# openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048 |
1 |
# nginx -t && service nginx reload |
Перевод Nexus […]
Интеграция Jenkins,Maven,Nexus,SonarQube
Установка связки Jenkins,Maven,Nexus,SonarQube рассмотрена в предыдущей статье Maven будет собирать проект, загружать артифакты на Nexus-репозитарий, а SonarQube будет анализировать код Выполним это в трех вариантах:
1 2 3 |
1) Без Jenkins ( с помощью командной строки и команд mvn) 2) С помощью Freestyle проекта в Jenkins 3) С помощью Pipeline проекта в Jenkins |
Рассмотрим первый вариант — Без Jenkins ( с помощью командной строки и команд mvn) Maven ищет конфигурационный файл settings.xml в двух местах — в директории,где установлен Maven, в каталоге […]
Установка связки Jenkins, Maven, Nexus, SonarQube на Centos7
Установка Jenkins Подключение EPEL-репозитария и установка java-openjdk
1 |
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm |
1 |
# yum update |
1 |
# yum update && yum upgrade# yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel |
1 |
# java -version |
1 2 3 |
openjdk version "1.8.0_171" OpenJDK Runtime Environment (build 1.8.0_171-b10) OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode) |
Добавление репозитария Jenkins и его установка
1 |
# yum install wget |
1 |
# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo |
1 |
# rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key |
1 |
# yum install jenkins |
1 |
# systemctl start jenkins |
1 |
# systemctl enable jenkins |
Продолжаем установку через WEB-интерфейс
1 |
http://<Jenkins-server-IP-address>:8080 |
Пароль указан в файле
1 |
# cat /var/lib/jenkins/secrets/initialAdminPassword |
Просмотр логов Jenkins
1 |
# tail -f /var/log/jenkins/jenkins.log |
Источник: https://wiki.jenkins.io/display/JENKINS/Installing+Jenkins+on+Red+Hat+distributions Установка Maven
1 |
# cd /opt/ && wget http://mirrors.sonic.net/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz |
1 |
# tar xvzf apache-maven-*-bin.tar.gz |
1 |
# rm -f apache-maven-*-bin.tar.gz; mv apache-maven-* maven |
1 |
# nano /etc/profile.d/maven.sh |
1 |
export PATH=/opt/maven/bin:${PATH} |
1 |
# source /etc/profile.d/maven.sh |
1 |
# mvn –version |
1 2 3 4 5 |
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T18:33:14Z) Maven home: /opt/maven Java version: 1.8.0_171, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-862.3.2.el7.x86_64", arch: "amd64", family: "unix" |
в настройках Jenkins указываем […]