我正在使用groovy脚本触发其他作业,这取决于Groovy plugin页面中的示例。
我将作业列表作为参数,验证它们是否存在并使用一些参数触发它们。请参阅主触发器代码:
// Prepare parameters array
def params =
[
new StringParameterValue('PARAM1', 'val1'),
new StringParameterValue('PARAM2', 'val2'),
]
def future = job.scheduleBuild2(0, new Cause.UpstreamCause(build), new ParametersAction(params))
println "Waiting for the completion of " + jobLink
anotherBuild = future.get()
我的触发工作运行完美,但有一个主要问题。它们的原始参数丢失,并被新的 PARAM1 和 PARAM2 取代。
如何触发作业并添加到其默认参数,不替换?
我努力为它找到一个解决方案而没有找到一个......
编辑:我在考虑不设置参数(并允许作业使用其默认值),但为作业的执行设置环境变量。有没有人有关于如何做到这一点的想法或例子?
答案 0 :(得分:4)
尝试了很多选项后,我决定加载我即将触发的作业的默认参数,并将它们添加到我正在准备的参数数组中,如下例所示。
我使用here中的示例来获取我作业的初始默认配置。
我仍然需要为选择参数和空值添加一些逻辑,但我对当前结果感到满意。
我希望这会有所帮助。
答案 1 :(得分:4)
这些天我会使用像Build Flow plugin这样的东西。 该业务流程DSL / API将有问题的代码减少为:
build('job', PARAM1: 'val1'
PARAM2: 'val2')
您可以将参数作为哈希映射传递,缺少的参数将回退到默认值。
此插件存在一个问题:它很快就会被放弃。 一个全新的替代方案(尚未发布):https://github.com/jenkinsci/workflow-plugin。