Gitlab ci- сообщает о неудачных испытаниях метра

У нас есть работа в Gitlab для нашего интеграционного проекта Jmeter+Maven. Который запустит файл.jmx, сгенерирует отчет панели мониторинга jmeter и отправит письмо. Ниже мой файл yml

stages:
- test
test_ba_bpmm_qaa-jb:
stage: test
tags:
- qa-api-automation

script:
- echo "-------------Running maven command to run jmeter tests---------"
- pwd 
- mvn clean install
- echo "-------------------Execution completed---------"
- cd target/jmeter
- pwd
- zip -r bpm_api_testresult.zip reports
- echo "This is the message body" | swaks --to abc@xyz.com --from 
"contact@xyz.com" --server 192.178.176.45 --auth LOGIN --auth-user 
"qauser1@sip.test" --auth-password "abc123" --attach 
"bpm_api_testresult.zip"
allow_failure: false
only:
- master

И следующий вывод:

[INFO] -------------------------------------------------------
[INFO]  P E R F O R M A N C E    T E S T S
[INFO] -------------------------------------------------------
[INFO]  
[INFO]  
[INFO] Executing test: Master_BPM_APIs.jmx
[INFO] Starting process with:[java, -Xms512M, -Xmx512M, -jar, ApacheJMeter- 
4.0.jar, -d, /home/gitlab-runner/builds/af1bddbf/0/sip-jbpm6-5/bpm-api- 
automation/target/jmeter, -e, -j, /home/gitlab-runner/builds/af1bddbf/0/sip- 
jbpm6-5/bpm-api-automation/target/jmeter/logs/Master_BPM_APIs.jmx.log, -l, 
/home/gitlab-runner/builds/af1bddbf/0/sip-jbpm6-5/bpm-api- 
automation/target/jmeter/results/Master_BPM_APIs.csv, -n, -o, /home/gitlab- 
runner/builds/af1bddbf/0/sip-jbpm6-5/bpm-api- 
automation/target/jmeter/reports/Master_BPM_APIs_20181023_164847, -t, 
/home/gitlab-runner/builds/af1bddbf/0/sip-jbpm6-5/bpm-api- 
automation/target/jmeter/testFiles/Master_BPM_APIs.jmx]
[INFO] Creating summariser <summary>
[INFO] Created the tree successfully using /home/gitlab- 
runner/builds/af1bddbf/0/sip-jbpm6-5/bpm-api- 
automation/target/jmeter/testFiles/Master_BPM_APIs.jmx
[INFO] Starting the test @ Tue Oct 23 16:48:50 IST 2018 (1540293530191)
[INFO] Waiting for possible Shutdown/StopTestNow/Heapdump message on port 
4445
[INFO] 1
[INFO] summary =      8 in 00:00:02 =    4.6/s Avg:    82 Min:     2 Max:   
207 Err:     1 (12.50%)
[INFO] Tidying up ...    @ Tue Oct 23 16:48:52 IST 2018 (1540293532577)
[INFO] ... end of run
[INFO] Completed Test: /home/gitlab-runner/builds/af1bddbf/0/sip-jbpm6- 
5/bpm-api-automation/target/jmeter/testFiles/Master_BPM_APIs.jmx
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ bpm-api- 
automation ---
[INFO] Installing /home/gitlab-runner/builds/af1bddbf/0/sip-jbpm6-5/bpm-api- 
automation/target/bpm-api-automation-0.0.1-SNAPSHOT.jar to /home/gitlab- 
runner/.m2/repository/com/causeway/bpm/bpm-api-automation/0.0.1- 
SNAPSHOT/bpm-api-automation-0.0.1-SNAPSHOT.jar
[INFO] Installing /home/gitlab-runner/builds/af1bddbf/0/sip-jbpm6-5/bpm-api- 
automation/pom.xml to /home/gitlab- 
runner/.m2/repository/com/causeway/bpm/bpm-api-automation/0.0.1- 
SNAPSHOT/bpm-api-automation-0.0.1-SNAPSHOT.pom
[INFO] --------------------------------------------------------------------- 
 ---
[INFO] BUILD SUCCESS
[INFO] --------------------------------------------------------------------- 
 ---
[INFO] Total time: 11.011 s
[INFO] Finished at: 2018-10-23T16:48:54+05:30
[INFO] --------------------------------------------------------------------- 
 ---
[INFO] Shutdown detected, destroying JMeter process...
[32;1m$ echo "-------------------Execution completed---------"[0;m
-------------------Execution completed---------

Но что нам нужно, так это если в случае какой-либо ошибки / сбоя теста сборка будет установлена ​​на сбой или вернет статус сборки 0 или 1 и вернет полную ошибку в консоли журнала заданий.

1 ответ

  1. Если вы уже используете плагин Jmeter Maven, если добавляете следующий блок в файл pom.xml:

    <execution>
         <id>jmeter-check-results</id>
         <goals>
             <goal>results</goal>
         </goals>
    </execution>
    

    сборка Maven будет помечена как сбойная, что приведет к сбою всей задачи Gitlab CI.

  2. Вы можете переключиться на инструмент Taurus, который предоставляет мощную и гибкую подсистему Pass/Fail Criteria, позволяющую вам определять, как бороться со сбоями, используя простые декларативные операторы, такие как

    - avg-rt of IndexPage>150ms for 10s, stop as failed
    - fail of CheckoutPage>50% for 10s, stop as failed
    

    поэтому, когда (если) критерии будут выполнены - Телец вернет ненулевой код выхода

  3. Решение только для JMeter: вы можете добавить JSR223 Listener с кодом:

    if (prev.isSuccessful()) {
        System.exit(-1)
    }
    

    это вернется -1 выход из родительского процесса, однако в этом случае файл результатов.jtl может быть неполным или поврежденным

Другие вопросы по тегам