我有一个如下所示的管道脚本:
node {
try {
stage('Prepare') {
// git clone here
}
stage('Compile') {
sh "make ${build_type}"
}
stage('Test') {
sh "./run tests ${build_type}"
}
}
finally {
if (fileExists("test_results.xml")) {
junit "test_results.xml"
}
emailext subject: "Build finished",
body: '${JELLY_SCRIPT, template="some-template.template"}',
to: "some-one@somewhere"
}
}
$ {build_type}可以"发布"或"调试"。
当我的构建收到触发器时,我希望我的管道为$ {build_type}中的每个参数运行一次,然后向我发送一个电子邮件,其中包含有关这两个版本的报告。
我怎样才能做到这一点?
我尝试在Compile阶段中定义并行块并在那里设置build_type,但这并不能使其他阶段并行运行。
答案 0 :(得分:1)
我希望以下代码段能为您提供帮助。这样你就可以包含多个构建类型dev,qa,prod。
def build_types = "dev;qa"
node {
try {
stage('Prepare') {
// git clone here
}
def buildTypeVar = build_types.tokenize(';')
for(int i=0;i<buildTypeVar.size();i++){
buildType=buildTypeVar.get(i).trim()
stage('Compile ${build_type}') {
sh "make ${build_type}"
}
stage('Test ${build_type}') {
sh "./run tests ${build_type}"
}
}
}
finally {
if (fileExists("test_results.xml")) {
junit "test_results.xml"
}
emailext subject: "Build finished",
body: '${JELLY_SCRIPT, template="some-template.template"}',
to: "some-one@somewhere"
}
}