繁体   English   中英

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

[英]Jenkins groovy build step trigger another job in groovy script removes original job's parameters

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

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

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

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

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

我使用了这里的示例来获取我的作业的初始默认配置。

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

我希望这有帮助。

这些天我会使用像Build Flow插件这样的东西。 该业务流程DSL / API将相关代码减少为:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM