2016-09-15 41 views
1

我一直试图在jenkins中建立一个管道,它并行运行我所有的机器人测试版本,然后在完成后运行另一个版本,其中包括发送1封电子邮件,其中包含所有测试的结果(而不是垃圾邮件,每个版本1个)。如何在jenkins管道中传递并行构建下游的参数

我知道机器人插件返回我们当前使用的变量$(ROBOT_PASSPERCENTAGE)和$(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" 
} 
} 

回答

1

Jenkins pipeline steps reference,你可以调用一个下游的工作与参数如下:

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... 
+0

那真的是下游部分很有帮助, 另一部分是,我有什么不实际读取的变量从建立正确的,我不知道如何让这些变量和把他们拉出来。它们是由机器人插件创建的,而不是标准的。有关于此的任何想法? –

相关问题