通过金牛座在Jenkins管道中设置Gatling报告名称

时间:2017-10-10 09:37:30

标签: jenkins jenkins-pipeline gatling taurus

我正在写一个声明性的jenkins管道,我面临着收集报告的问题:

enter image description here

平均响应时间趋势不正确,有没有办法用曲线替换下面的点云?

我Jenkinsfile的摘录:

stage('perf') {
  steps {
    bzt params: './taurus/scenario.yml', generatePerformanceTrend: false, printDebugOutput: true
    perfReport configType: 'PRT', graphType: 'PRT', ignoreFailedBuilds: true, modePerformancePerTestCase: true, modeThroughput: true, sourceDataFiles: 'results.xml'
    dir ("taurus/results") {
      gatlingArchive()
    }
  }
}

从我的 scenario.yml 中提取:

modules:
  gatling:
    path:      ./bin/gatling.sh
    java-opts: -Dgatling.core.directory.data=./data

scenario.yml 中,我尝试设置gatling.core.outputDirectoryBaseName

java-opts: -Dgatling.core.directory.data=./data -Dgatling.core.outputDirectoryBaseName=./my_scenario

在这种情况下,它只用 my_scenario 替换 gatling ,但已经存在很大的数字。

1 个答案:

答案 0 :(得分:0)

我终于找到了解决这个问题的解决方案,但这并不简单,因为它涉及金牛座代码的扩展。

问题是here,在taurus repo中 gatling.py 文件的第309行。它明确地添加了一个前缀' gatling - '找一份报告。

但是,文件 scenario.yml 中的参数-Dgatling.core.outputDirectoryBaseName=./my_scenario会通过 my_scenario 更改此前缀。我将在下面描述的是一种扩展金牛座以便快速扩展的方法。

使用此代码创建文件 ./ extensions / gatling.py 以扩展类GatlingExecutor:

from bzt.modules.gatling import GatlingExecutor, DataLogReader

class GatlingExecutorExtension(GatlingExecutor):
    def __init__(self):
        GatlingExecutor.__init__(self)

    def prepare(self):
        # From method bzt.modules.gatling.GatlingExecutor:prepare, copy code before famous line 309
        # Replace line 309 by
        self.dir_prefix = self.settings.get('dir_prefix', 'gatling-%s' % id(self))
        # From method bzt.modules.gatling.GatlingExecutor:prepare, copy code after famous line 309

创建文件 ./ bztx.py 以包装命令bzt

import signal
import logging
from bzt.cli import main, signal_handler

if __name__ == "__main__":
    signal.signal(signal.SIGINT, signal_handler)
    signal.signal(signal.SIGTERM, signal_handler)
    main()

使用新的设置属性 dir_prefix 更新文件 scenario.yml 并定义新的执行器类:

modules:
  gatling:
    path:       ./bin/gatling.sh
    class:      extensions.GatlingExecutorExtension
    dir_prefix: my_scenario
    java-opts:  -Dgatling.core.directory.data=./data -Dgatling.core.outputDirectoryBaseName=./my_scenario

最后,通过调用新文件 bztx.py 替换 bzt 来更新您的Jenkins文件:

stage('perf') {
  steps {
    sh 'python bztx.py ./taurus/scenario.yml'
    perfReport configType: 'PRT', graphType: 'PRT', ignoreFailedBuilds: true, modePerformancePerTestCase: true, modeThroughput: true, sourceDataFiles: 'results.xml'
    dir ("taurus/results") {
      gatlingArchive()
    }
  }
}

这一切都适合我。额外奖励:此解决方案提供了一种方法,可以使用您自己的插件轻松扩展金牛座; - )