如何在jenkins中运行具有不同参数的相同管道?

时间:2017-08-07 06:31:31

标签: jenkins jenkins-pipeline

我有一个如下所示的管道脚本:

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,但这并不能使其他阶段并行运行。

1 个答案:

答案 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"
 }
}