#docker #github #jmeter #devops
Вопрос:
Я надеялся получить несколько советов по следующей проблеме:
Я построил простой конвейер CI/CD в действиях GitHub и пытаюсь выполнить свои тесты Jmeter внутри контейнера Docker. Я использую изображение justb4/jmeter и, по сути, просто копирую свой файл jmx из репозитория GitHub в /opt/apache-jmeter-5.3/bin, чтобы я мог выполнять тесты в своем контейнере. Моя проблема в том, что даже если тесты Jmeter завершаются неудачно внутри контейнера, мой конвейер продолжает выполняться и не обнаруживает этот сбой.
Как я могу остановить дальнейшее выполнение конвейера, если мои тесты Jmeter не прошли в контейнере Docker?
Любая помощь будет очень признательна, Марк
Ответ №1:
Для того, чтобы выполнить шаг, на котором вам необходимо вернуть ненулевой код состояния выхода, параметры находятся в:
- Используйте плагин JMeter Maven, если вы добавляете
jmeter-check-results
такие действия, как:<execution> <id>jmeter-check-results</id> <goals> <goal>results</goal> </goals> </execution>
неудачная сборка maven будет поймана действиями Github
- Используйте инструмент Taurus в качестве оболочки, Taurus также может быть запущен как образ докера, и у него есть подсистема критериев прохождения/сбоя, которая имеет гибкие критерии, позволяющие условно провалить тест, в случае сбоя теста Taurus возвращает ненулевой код состояния выхода, и этого будет достаточно для провала шага конвейера
- Этот параметр требует минимальных изменений, но он наименее мощный. Добавьте прослушиватель JSR223 в свой план тестирования и поместите следующий код в область «Сценарий» :
if (!prev.isSuccessful()) { System.exit(1) }
это приведет к выходу JMeter при любом сбое пробоотборника (однако в зависимости от конфигурации JMeter вы можете потерять часть результатов).
Ответ №2:
Проверьте мое действие по установке jmeter в вашем рабочем процессе.
https://github.com/marketplace/actions/setup-jmeter
name: Test Action
on:
push
jobs:
test-action:
runs-on: ubuntu-latest
steps:
- name: Setup Jmeter
uses: tush-tr/setup-jmeter@v1.1.0