Jenkins管道将所有参数传递给下游作业

时间:2017-06-06 19:03:23

标签: jenkins jenkins-pipeline

我有一个名为 buildall 的管道工作,如下所示:

pipeline {
    stages {
        stage("job1") {
            build job: "job1"
        }
    }
}

buildall 作业有25个参数。我想将所有 buildall 的参数传递给 job1 。有没有一种简单的方法可以做到这一点,而不是手动指定每个参数?

在这个问题中:Pipeline pass parameters to downstream jobs 一个子问题被问到但从未回答:甚至更好,是否有一种不那么繁琐的方式可以将所有管道参数传递给下游工作。

这就是我的问题。

3 个答案:

答案 0 :(得分:9)

以下似乎有效(尽管我还没有对它进行过广泛的测试):

.limitToLast(5)

缺点:要访问rawBuild和getAction,您必须在Manage Jenkins>下的Jenkins中禁用Groove沙箱或批准这些签名。进程内脚本批准。此对话框将向您显示您可能引入了一个安全漏洞。因此,如果你想冒这个风险,这取决于你的环境。

答案 1 :(得分:5)

如果您不关心参数类型,此方法不需要禁用Groovy Sandbox - 它只是假设所有参数都可以视为字符串 (例如)不适用于“文件”:

def myparams = params.collect{
    string(name: it.key, value: it.value)
}
build job: 'downstream-job', parameters: myparams

扩展逻辑以处理预定义的非字符串参数类型并不太难,但我同意这不是必需的。更好的方法是以build()DSL闭包所需的格式公开参数,包括当前通过“params”全局变量不可见的类型细节,或者可能添加布尔值,例如:

// I wish:
build job: 'downstream-job', includeMyParameters: true, parameters: anyExtras

答案 2 :(得分:1)

您可以使用以下命令传递所有管道参数:

def params=[]
env.getEnvironment().each{ k, v ->
        params.add(string(name:"${k}", value:"${v}"))
   }

def slaveJob = build job: 'BuildJob', parameters:params