从DSL内部执行Jenkins Pipeline



我确实有一个管道p1,配置了3个参数,param1作为ChoiceParam,param2和param3作为runParameters,它们检索不同的构建ID并将其作为版本传递。

我还有另一个管道p2,我想从中运行p1。p2也配置了相同的参数,因此,在dsl中,我需要用params1、params2、params3调用p1,因为params应该在p2 中继承

但我做不到,因为我已经尝试了我能想到的任何一种方法。有人能帮我吗?

p2:
build() {
    job('p1')
    parameters([[$class:'StringParameterValue', name:'param1', value:${param1}],
                [$class:'StringParameterValue', name:'param2', value:${param2}],
                [$class:'StringParameterValue', name:'param3', value:${param3}]
    ])
}

然后,也尝试了

p2:
build(job:'p1', parameters: ([[$class:'StringParameterValue', name:'param1', value:${param1}],
            [$class:'StringParameterValue', name:'param2', value:${param2}],
            [$class:'StringParameterValue', name:'param3', value:${param3}]
]))

没有成功。有什么需要帮忙的吗?

您真的需要将p1定义为一个完整的、独立的作业吗?我不认为像过去自由式工作那样把管道工作串联起来是一种好的做法。相反,您可能应该加载另一个包含p1任务的管道文件,然后从p2调用p1的定义函数。这是医生的一个很好的例子。

基本上,您需要做的是将p1定义为管道文件p1.groovy:

def p1Actions(param1, param2, param3) {
    // Do whatever p1 does with your 3 params
}
return this;

然后从p2:调用它

pipeline = load 'p1.groovy'
pipeline.p1Actions()

如果您希望p1可以从p2以外的其他作业中重复使用,只需将其推送到自己的SCM repo中,并在加载脚本之前向上一个示例添加SCM签出即可。顺便说一句,文档中也很好地介绍了这一步骤。

相关内容

  • 没有找到相关文章

最新更新