我如何通过参数从并行构建下游詹金斯管道



我一直试图在jenkins中建立一个管道,该管道并行运行所有机器人测试构建,然后,在它们全部完成后,运行另一个构建,其中包括发送1封带有所有测试结果的电子邮件(而不是每个构建发送1封垃圾邮件)。

我知道机器人插件返回变量$(robot_passspercentage)和$(ROBOT_PASSRATIO),我们目前使用。我希望有一种方法可以提取它们,并将其用作下游管道构建的参数。

作为测试,我尝试了下面形式的groovy,但不知道如何获得变量并传递到下游构建。

感谢您的帮助。

stage('set up') {
node {
    build job: 'setup', propagate: false
}
}
stage('run suites') {
parallel 'test set 1':{
    node {
        build job: 'test set 1', propagate: false
        def 1_PASSPERCENTAGE = build.buildVariableResolver.resolve("ROBOT_PASSPERCENTAGE")
        def 1_PASSRATIO = build.buildVariableResolver.resolve("ROBOT_PASSRATIO")
        println "FOO=$CRM_PASSPERCENTAGE"
        println "FOO=$CRM_PASSRATIO"
    }
}, 'test set 2':{
    node {
        build job: 'thankQ Robot Mission Personnel Tests', propagate: false
        def 2_PASSPERCENTAGE = build.buildVariableResolver.resolve("ROBOT_PASSPERCENTAGE")
        def 2_PASSRATIO = build.buildVariableResolver.resolve("ROBOT_PASSRATIO")
        println "FOO=$MP_PASSPERCENTAGE"
        println "FOO=$MP_PASSRATIO"
    }
}
}
stage('results') {
node {
    println "FOO=$2_PASSPERCENTAGE"
    println "FOO=$2_PASSRATIO"
    println "FOO=$1_PASSPERCENTAGE"
    println "FOO=$1_PASSRATIO"
}
}

从Jenkins管道步骤引用中,你可以使用如下参数调用下游作业:

build job: downstreamJob, parameters: [
      [$class: 'StringParameterValue', name: 'passPercentage', value: "${1_PASSPERCENTAGE}"],
      [$class: 'StringParameterValue', name: 'passRatio', value: "${1_PASSRATIO}"]
]

至于如何得到你的机器人变量,我从来没有使用过它,但我猜你总是可以使用测试构建的URL(例如你的test set 1作业),并解析日志文件或构建页面的变量,你正在寻找。像这样:

def robotLog = script: 'curl http://your-jenkins/job/test-set-1/lastBuild/robot.log', returnStdout: true // First determine which URL corresponds to the robot.log file, or use the main page of your build.
def percentageMatcher = robotLog.trim() =~ 'Pass percentage.*(\d+)%'  // Again, find the exact regex here
def 1_PASSPERCENTAGE = percentageMatcher[0][1]
... // Same thing with pass ratio...

相关内容

  • 没有找到相关文章

最新更新