如何在詹金斯中用不同的输入从主要工作开始(平行)工作?

时间:2018-12-12 23:41:55

标签: jenkins jenkins-pipeline

我正在使用jenkins,并且在jenkinsfile中具有脚本化语法 在源签出后的主作业中,我需要运行n次(并行)其他作业(使用不同的输入)。 有什么技巧可以开始吗?

def checkout(repo, branch) {

checkout(changelog: false,
        poll: false,
        scm: [$class                           : 'GitSCM',
              branches                         : [[name: "*/${branch}"]],
              doGenerateSubmoduleConfigurations: false,
              recursiveSubmodules              : true,
              extensions                       : [[$class: 'LocalBranch', localBranch: "${branch}"]],
              submoduleCfg                     : [], userRemoteConfigs: [[credentialsId: '', url: "${repo}"]]])


withCredentials([[$class          : '',

                  credentialsId   : '',

                  passwordVariable: '',

                  usernameVariable: '']]) {


    sh "git clean -f && git reset --hard origin/${branch}"
}
}

node("jenkins02") {

stage('Checkout') {
    checkout gitHubRepo, gitBranch
}

}

1 个答案:

答案 0 :(得分:0)

为此,我们将要运行的所有作业存储在Map中,然后将其传递到并行步骤中以执行。因此,您只需设置不同的参数并将每个定义添加到地图中,然后执行即可。

    Map jobs = [:]
    jobs.put('job-1', {
        stage('job-1') {
            node {
                build(job: "myorg/job-1/master", parameters: [new StringParameterValue('PARAM_NAME','VAL1')], propagate: false)
            }
        }
    })
    jobs.put('job-2', {
        stage('job-2') {
            node {
                build(job: "myorg/job-2/master", parameters: [new StringParameterValue('PARAM_NAME','VAL2')], propagate: false)
            }
        }
    })
    parallel(jobs)