9

我正在使用 groovy 脚本来触发其他作业,该脚本基于Groovy 插件页面中的示例。

我得到一个作业列表作为参数,验证它们是否存在并用一些参数触发它们。见主触发代码:

    // 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()

我触发的作业运行良好,但存在一个主要问题。它们的原始参数丢失并被新的PARAM1PARAM2替换。

如何触发作业并添加到其默认参数而不是替换它们?

我努力寻找解决方案,但没有找到...

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

4

2 回答 2

5

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

我使用此处的示例来获取我的工作的初始默认配置。

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

我希望这有帮助。

于 2013-07-09T11:54:35.743 回答
4

这些天我会为此使用诸如Build Flow 插件之类的东西。该编排 DSL/API 将相关代码简化为:

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

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

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

于 2014-05-16T19:43:42.463 回答