如何并行运行多个Jenkins管道并向每个管道发送环境变量?

时间:2017-06-07 13:06:28

标签: jenkins continuous-integration jenkins-plugins jenkins-pipeline

我有多个客户端,所有客户都需要相同的管道运行但具有不同的变量。我的想法是这样做:

  1. 拥有一个管道,可以为客户端构建/打包/部署/验证所需的一切 - 并且需要env变量
  2. 有办法调用该管道并在运行时传递env变量
  3. 有一种方法可以使用diff env变量多次调用该管道,但只需一次调用(可能是一个遍历变量数组的管道)
  4. 我将如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

有几种方法 - 这取决于您最适合的用例。从头到尾:

  1. 使用参数创建管道作业,并为每个客户端手动/或每个api触发它。取自https://jenkins.io/doc/book/pipeline/syntax/#declarative-directives的样本:

    pipeline {
        agent any
        parameters {
            string(name: 'PERSON', defaultValue: 'Mr Jenkins', description: 'Who should I say hello to?')
        }
        stages {
            stage('Example') {
                steps {
                    echo "Hello ${params.PERSON}"
                }
            }
        }
    }
    
  2. 使用参数,让一个管道作业触发另一个管道作业(每个客户端一次)。父作业可以为每个客户提供一个阶段:

    stage ('Build client A') {
        build job: 'common-pipeline-job-for-clients', 
            parameters: [string(name: 'param1', value: 'some value')]
    }
    
  3. 创建管道模板并使用该模板为每个客户创建管道 - 如下所述:Jenkins pipeline template