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

Jenkins groovy构建步骤触发groovy脚本中的另一个作业删除原始作业';s参数,groovy,jenkins,Groovy,Jenkins,我正在使用groovy脚本触发其他作业,它基于页面中的示例 我得到一个作业列表作为参数,验证它们是否存在,并用几个参数触发它们。请参阅主触发代码: // Prepare parameters array def params = [ new StringParameterValue('PARAM1', 'val1'), new StringParameterValue('PARAM2', 'val2'), ] def fu

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

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

我努力想找到解决办法,但没有找到


编辑:我考虑的不是设置参数(并允许作业使用其默认值),而是为作业的执行设置环境变量。是否有人有这样做的想法或示例?

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

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

我仍然需要向choices参数和null值添加一些逻辑,但我对当前结果感到满意


我希望这有帮助。

这些天我会用类似的东西来做这个。 该编排DSL/API将相关代码缩减为:

 build('job', PARAM1: 'val1'
              PARAM2: 'val2')
您可以将参数作为哈希映射传递,缺少的参数将返回默认值

这个插件有一个问题:它可能很快就会被放弃。
一个全新的替代方案(尚未发布):.

您知道一种方法可以“包括”当前构建中执行的构建步骤,而不是启动一个单独的构建步骤吗?(类似于模板插件,但来自脚本)不,我不知道。。。但是你为什么要这样做呢?我想创建一种“代理”作业,它的行为与其他按需操作的作业类似。例如,有一个长期运行的单元测试套件,但我也有一个可以随时运行单个测试的套件,由参数控制。但是我不想污染标准测试作业的构建历史,取而代之的是一个定制的测试——我可以在服务器上快速地进行测试(无需在本地进行设置,例如针对特定版本)。在这个定制测试作业中,我想做与标准作业完全相同的事情,只需通过一个参数精简测试套件。因此,重用相同的作业构建步骤,但保留历史记录。顺便说一句,我已经使用Groovy解决了这一问题,效果非常好。如果有人感兴趣,我可以发布。不要问。。。发帖!:-)这是一个有趣的想法,在某些情况下可能非常有用。