1. Обзор
В этой статье мы собираемся настроить конвейер непрерывной доставки с использованием Jenkins и Apache JMeter .
Мы будем полагаться на статью JMeter как на отличную отправную точку для первого понимания основ JMeter, поскольку в ней уже есть несколько настроенных тестов производительности, которые мы можем запустить. И мы будем использовать выходные данные сборки этого проекта, чтобы увидеть отчет, созданный подключаемым модулем производительности Jenkins .
2. Настройка Дженкинса
Прежде всего, нам нужно скачать последнюю стабильную версию Jenkins , перейти в папку, где находится наш файл, и запустить его с помощью команды java -jar jenkins.war
.
Имейте в виду, что мы не можем использовать Jenkins без начальной настройки пользователей.
3. Установка плагина производительности
Установим плагин Performance
, необходимый для запуска и отображения тестов JMeter:
Теперь нам нужно не забыть перезапустить экземпляр.
4. Запустите тесты JMeter с Jenkins
Теперь переходим на домашнюю страницу Jenkins и нажимаем «создать новые задания», указываем имя, выбираем проект Freestyle
и нажимаем «ОК».
На следующем шаге на вкладке «
Общие
» мы можем настроить его с помощью следующих общих сведений: ``
Затем давайте установим URL-адрес репозитория и ветки для сборки:
Теперь перейдите на вкладку «
Сборка
» , чтобы указать, как мы будем строить проект. Здесь вместо того, чтобы напрямую указывать команду Maven для сборки всего проекта, мы можем воспользоваться другим способом, чтобы лучше контролировать наш конвейер, поскольку цель состоит в том, чтобы построить только один модуль. ``
На подвкладке
Execute shell
пишем скрипт для выполнения необходимых действий после клонирования репозитория: ** ** ``
- Перейдите к нужному подмодулю
- Мы составили его
- Мы развернули его, зная, что это проект на основе весенней загрузки.
- Ждем пока приложение станет доступно на порту 8989
- И в конце мы просто указываем как путь к нашему скрипту JMeter (расположенному внутри папки ресурсов модуля
jmeter
) для использования для тестирования производительности, так и путь к результирующему файлу (JMeter.jtl
) также в папке ресурсов.
Вот небольшой соответствующий сценарий оболочки:
cd jmeter
./mvnw clean install -DskipTests
nohup ./mvnw spring-boot:run -Dserver.port=8989 &
while ! httping -qc1 http://localhost:8989 ; do sleep 1 ; done
jmeter -Jjmeter.save.saveservice.output_format=xml
-n -t src/main/resources/JMeter.jmx
-l src/main/resources/JMeter.jtl
Как показано на следующем изображении:
После того, как проект клонирован с GitHub, мы его скомпилировали, открыли на порту 8989 и обработали тесты производительности, нам нужно сделать так, чтобы результат плагина производительности отображался в удобном для пользователя виде.
Мы можем сделать это, добавив специальный Post-build Actions
. Нам нужно предоставить исходный файл результатов и настроить действие:
Выбираем Standard Mode
с последующими конфигами:
Давайте нажмем « Сохранить»,
в левом меню панели инструментов Jenkins нажмите кнопку « Создать сейчас»
** ** и подождите, пока она завершит набор операций, которые мы там настроили.
После его завершения мы увидим в консоли все результаты нашего проекта. В конце мы получим либо Finished: SUCCESS
** ** , либо Finished: FAILURE
:
Перейдем в область отчета о производительности
** ** , доступную через меню слева.
Здесь у нас будет отчет обо всех прошлых сборках, включая текущую, чтобы увидеть разницу в производительности:
Щелкнем по индикатору вверху таблицы, чтобы получить только результат последней сборки, которую мы только что сделали:
На панели управления нашего проекта мы можем получить Performance Trend
, которые представляют собой другие графики, показывающие результаты последних сборок:
Примечание. Применить то же самое к проекту конвейера
также просто:
- Создайте другой проект (элемент) на панели инструментов и назовите его , например,
JMeter-pipeline
(вкладка «Общая информация»
) . - Выберите
Pipeline
в качестве типа проекта - На
вкладке «
Конвейер
» в определении выберите «Сценарий конвейера
» и установите флажок «Использовать песочницу Groovy».
- В области
сценария
просто заполните следующие строки:
node {
stage 'Build, Test and Package'
git 'https://github.com/foreach/tutorials.git'
dir('jmeter') {
sh "./mvnw clean install -DskipTests"
sh 'nohup ./mvnw spring-boot:run -Dserver.port=8989 &'
sh "while ! httping -qc1
http://localhost:8989 ; do sleep 1 ; done"
sh "jmeter -Jjmeter.save.saveservice.output_format=xml
-n -t src/main/resources/JMeter.jmx
-l src/main/resources/JMeter.jtl"
step([$class: 'ArtifactArchiver', artifacts: 'JMeter.jtl'])
sh "pid=\$(lsof -i:8989 -t); kill -TERM \$pid || kill -KILL \$pid"
}
}
Этот сценарий начинается с клонирования проекта, переходит в целевой модуль, компилируется и запускается, чтобы убедиться, что приложение доступно по адресу http://localhost:8989.
Затем мы запускаем тесты JMeter, расположенные в папке ресурсов, сохраняем результаты в качестве вывода сборки, и, наконец, приложение закрывается.
5. Вывод
В этой быстрой статье мы создали простую среду непрерывной доставки для запуска и демонстрации тестов Apache JMeter в
Jenkins
двумя способами; сначала через проект Freestyle,
а затем через Pipeline
.
Как всегда, исходный код этой статьи можно найти на GitHub .