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 на Ubuntu 16
Интеграция Jenkins,Maven,SonarQube,Nexus
Установка Apache Tomcat сервера на Ubuntu 16

1.Создание pipeline-petclinic-declarative (несмотря на название сборки в Jenkinsfile будет использоваться scripted тип pipeline, а не declarative)

2.Создание freestyle-petclinic-deploy сборки для копирования артифактов(war-файла) из сборки pipeline-petcinic-declarative и деплоя приложения на удаленный Tomcat-сервер

3.Создание freestyle-petclinic-perftest сборки для запуска нагрузочного тестирования раздеплоенного в Tomcat-сервере приложения и публикации результатов тестирования в Jenkins

Порядок выполнения сборок имеет вид

После чего шаг №3 перенесем внутрь сборки pipeline-petclinic-declarative т.е. сборку 3 не будем использовать, а ее функционал реализуем как stage ‘Load Stage’ в сборке 1
Т.е. порядок выполнения сборок будет иметь вид

 

1.Создание pipeline-petclinic-declarative Jenkinsfile в корне репозитария проекта, который нужно собирать имеет вид

Сборка pipeline-petclinic-declarative

 

2.Создание freestyle-petclinic-deploy сборки для копирования артифактов(war-файла) из сборки pipeline-petcinic-declarative и деплоя приложения на удаленный Tomcat-сервер

1.Установка необходимых плагинов в Jenkins
— Copy artifact
— Deploy war/ear to a container

2.Добавление пользователя в Tomcat
Создадим для Jenkins отдельного пользователя с правом выполнять скрипты

3.Cоздание в Jenkins пользователя с паролем, который указан в конфигурационном файле tomcat

4. Создание freestyle-проекта в Jenkins freestyle-petclinic-deploy
Копирование артифакта с проекта pipeline-petclinic-declarative, на котором он был собран

Разворачивание приложения на Tomcat-сервере

Вызов другой сборки freestyle-petclinic-perftest (будет создана позже)

Запускаем сборку freestyle-petclinic-deploy и проверяем раздеплоенное приложение на Tomcat-сервере

http://<mytomcatservername>:8080/->Manager App->/petclinic

Логи сборки

 

3.Создание freestyle-petclinic-perftest сборки для запуска нагрузочного тестирования раздеплоенного в Tomcat-сервере приложения и публикации результатов тестирования

 

1.Создание Apache JMeter файла тестирования

Apache-Jmeter

Скачиваем Apache Jmeter с http://jmeter.apache.org/download_jmeter.cgi
Извлекаем файлы с архива и переходим в каталог bin
Выполняем файл jmeter.bat или jmeter.sh в зависимости от операционной системы
В результате чего открывается Apache Jmeter Console, в которой создаем наш план тестирования
Далее привожу пошаговую инструкцию п созданию плана тестирования, взятую из книги.

Save the .jmx file.(например, под названием Petclinic.jmx)

Например, я создал этот файл в ApacheJmeter под Windows

 

 

2.Установка Apache-jmeter на Jenkins-серверe(на Ubuntu16)

Просмотр доступных опций Jmeter

Просмотр помощи(примеров) использования jmeter

Для нас предстваляет интерес следующая команда

To run Apache JMeter in NON_GUI mode:

Загружаем созданный в Windows в Apache Jmeter план тестирования (файл Petclinic.jmx) в каталог /var/lib/jenkins/scripts/

Изменяем владельца/группу на Jenkins для каталога scripts

 

3.Создание freestyle-проекта в Jenkins freestyle-petclinic-perftest

Добавляем шаг сборки, на котором выполняем bash/shell-команду

Добавляем послесборочный шаг по анализу отчета Jmeter(файла Test.jtl) и публикации отчета
Например, выставим пороги для установки статуса сборки как нестабильной при 3 и более процентов ошибок и статуса провалившейся сборки – при 5% и более

Запускаем сборку freestyle-petclinic-perftest и проверяем

Логи сборки

Наличие отчетов на вкладке Performance Trend

Trend report

Last report

 

 

Теперь можна запускать сборку проекта pipeline-petclinic-declarative и проверять полный CI/CD-цикл, заложенный в функционале всех ранее созданных сборок.

Blue Ocean визуализация для сборки pipeline-petclinic-declarative

 

 

SonarQube

Nexus-maven-репозитарий

 

 

Добавляем этап по нагрузочному тестированию в Jenkinsfile на проекте pipeline-petclinic-declarative вместо использования/вызова сборки freestyle-petclinic-perftest

Т.е. весь Jenkinsfile на проекте pipeline-petclinic-declarative имеет вид

В сборке freestyle-petclinic-deploy удалим вызов сборки freestyle-petclinic-perftest
т.к. после корректного завершения сборки freestyle-petclinic-deploy, вызванной на этапе Archive Artifacts в сборке pipeline-petclinic-declarative, будет выполнен шаг ‘Load Test’ из сборки pipeline-petclinic-declarative, который и выполнит тот функционал, который ранее выполняля сборка freestyle-petclinic-perftest

Запускаем сборку и проверяем наличие этапа Load Test и результатов тестирования на вкладке артефакты

На вкладке Full Stage View сборки pipeline-petclinic-declarative

Источник:  Книга Jenkins Essentials.2nd edition by Mitesh Soni

Комментирование и размещение ссылок запрещено.

Комментарии закрыты.

Яндекс.Метрика