Настройте Jenkins для запуска и показа тестов JMeter

Настройте Jenkins для запуска и показа тестов JMeter

1. обзор

В этой статье мы собираемся настроить конвейер непрерывной доставки, используяJenkins иApache JMeter.

Мы будем полагаться на статьюJMeter как на отличную отправную точку, чтобы сначала понять основы JMeter, поскольку в нем уже есть настроенные тесты производительности, которые мы можем запустить. И мы воспользуемся результатами сборки этого проекта, чтобы увидеть отчет, созданный плагином JenkinsPerformance.

2. Настройка Jenkins

Прежде всего, нам нужно загрузить последнюю стабильную версиюJenkins, перейти в папку, в которой находится наш файл, и запустить его с помощью командыjava -jar jenkins.war.

Имейте в виду, что мы не можем использовать Jenkins без первоначальной настройки пользователей.

3. Установка плагина производительности

Установим плагинPerformance, который необходим для запуска и отображения тестов JMeter:

image

Теперь нам нужно помнить, чтобы перезапустить экземпляр.

4. Запустите тесты JMeter с Jenkins

Теперь давайте перейдем на домашнюю страницу Jenkins и нажмем «создать новые задания», укажите имя, выберитеFreestyle project и нажмите «ОК».

На следующем шаге, наGeneralTab, мы можем настроить его с помощью следующих общих деталей:

image

Затем зададим URL репозитория и ветки для сборки:

image

Теперь перейдите к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

Как показано на следующем изображении:

image

После того, как проект был клонирован из GitHub, мы скомпилировали его, открыли на порту 8989 и обработали тесты производительности, нам нужно, чтобы плагин производительности отображал результат в удобном для пользователя виде.

Мы можем сделать это, добавив выделенныйPost-build Actions. Нам нужно предоставить исходный файл результатов и настроить действие:

image

ВыбираемStandard Mode с последующими конфигами:

image

Давайте нажмемSave, в левом меню панели инструментов Jenkins, нажмем кнопкуBuild Now ** и подождем, пока он завершит набор операций, которые мы там настроили.

По завершении мы увидим на консоли все результаты нашего проекта. В итоге мы получимFinished: SUCCESS ** илиFinished: FAILURE:

image

Давайте перейдем в областьPerformance Report **, доступную через левое меню.

Здесь у нас будет отчет обо всех прошлых сборках, включая текущую, чтобы увидеть разницу в производительности:

image

Нажмите на указатель вверху таблицы, чтобы получить только результат последней сборки, которую мы только что сделали:

image

На панели инструментов нашего проекта мы можем получитьPerformance Trend, которые представляют собой другие графики, показывающие результаты последних сборок:

image

Примечание: применить то же самое кPipeline project также просто:

  1. Создайте другой проект (элемент) на панели управления и назовите его, например,JMeter-pipeline (General info Tab)

  2. ВыберитеPipeline в качестве типа проекта

  3. НаPipelineTab, в определении выберитеPipeline script ** и отметьтеUse Groovy Sandbox

  4. В области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.