Jenkins groovy构建步骤触发groovy脚本中的另一个作业删除原始作业的参数

时间:2013-06-24 15:23:22

标签: groovy jenkins

我正在使用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 取代。

如何触发作业并添加到其默认参数,不替换

我努力为它找到一个解决方案而没有找到一个......

编辑:我在考虑不设置参数(并允许作业使用其默认值),但为作业的执行设置环境变量。有没有人有关于如何做到这一点的想法或例子?

2 个答案:

答案 0 :(得分:4)

尝试了很多选项后,我决定加载我即将触发的作业的默认参数,并将它们添加到我正在准备的参数数组中,如下例所示。

我使用here中的示例来获取我作业的初始默认配置。

我仍然需要为选择参数和空值添加一些逻辑,但我对当前结果感到满意。

我希望这会有所帮助。

答案 1 :(得分:4)

这些天我会使用像Build Flow plugin这样的东西。 该业务流程DSL / API将有问题的代码减少为:

 build('job', PARAM1: 'val1'
              PARAM2: 'val2')

您可以将参数作为哈希映射传递,缺少的参数将回退到默认值。

此插件存在一个问题:它很快就会被放弃。 一个全新的替代方案(尚未发布):https://github.com/jenkinsci/workflow-plugin