Настройте Jenkins для запуска и показа тестов JMeter
1. обзор
В этой статье мы собираемся настроить конвейер непрерывной доставки, используяJenkins иApache JMeter.
Мы будем полагаться на статьюJMeter как на отличную отправную точку, чтобы сначала понять основы JMeter, поскольку в нем уже есть настроенные тесты производительности, которые мы можем запустить. И мы воспользуемся результатами сборки этого проекта, чтобы увидеть отчет, созданный плагином JenkinsPerformance.
2. Настройка Jenkins
Прежде всего, нам нужно загрузить последнюю стабильную версиюJenkins, перейти в папку, в которой находится наш файл, и запустить его с помощью командыjava -jar jenkins.war.
Имейте в виду, что мы не можем использовать Jenkins без первоначальной настройки пользователей.
3. Установка плагина производительности
4. Запустите тесты JMeter с Jenkins
Теперь давайте перейдем на домашнюю страницу Jenkins и нажмем «создать новые задания», укажите имя, выберитеFreestyle project и нажмите «ОК».
На следующем шаге, наGeneralTab, мы можем настроить его с помощью следующих общих деталей:
Затем зададим URL репозитория и ветки для сборки:
Теперь перейдите кBuildTab, чтобы указать, как мы будем строить проект. Здесь, вместо того, чтобы прямо указывать команду Maven для создания всего проекта, мы можем пойти другим путем, чтобы лучше контролировать наш конвейер, поскольку целью является просто построить один модуль.
НаExecute shell **Sub-tab мы пишем скрипт для выполнения необходимых действий после клонирования репозитория:
-
Перейдите к нужному субмодулю
-
Мы скомпилировали
-
Мы развернули его, зная, что это проект на основе Spring Boot.
-
Ждем пока приложение станет доступно на порту 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 с последующими конфигами:
Давайте нажмемSave, в левом меню панели инструментов Jenkins, нажмем кнопкуBuild Now ** и подождем, пока он завершит набор операций, которые мы там настроили.
По завершении мы увидим на консоли все результаты нашего проекта. В итоге мы получимFinished: SUCCESS ** илиFinished: FAILURE:
Давайте перейдем в областьPerformance Report **, доступную через левое меню.
Здесь у нас будет отчет обо всех прошлых сборках, включая текущую, чтобы увидеть разницу в производительности:
Нажмите на указатель вверху таблицы, чтобы получить только результат последней сборки, которую мы только что сделали:
На панели инструментов нашего проекта мы можем получитьPerformance Trend, которые представляют собой другие графики, показывающие результаты последних сборок:
Примечание: применить то же самое кPipeline project также просто:
-
Создайте другой проект (элемент) на панели управления и назовите его, например,JMeter-pipeline (General info Tab)
-
ВыберитеPipeline в качестве типа проекта
-
НаPipelineTab, в определении выберитеPipeline script ** и отметьтеUse Groovy Sandbox
-
В областиscript просто заполните следующие строки:
node {
stage 'Build, Test and Package'
git 'https://github.com/eugenp/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. Заключение
В этой быстрой статье мы создали простую среду непрерывной доставки для запуска и отображения тестов ApacheJMeter вJenkins двумя способами; сначала черезFreestyle project, а затем черезPipeline.
Как всегда, исходный код этой статьи можно найти вover on GitHub.