我一直在苦苦挣扎的问题是,每当我向Jenkins管道添加新参数时,下一个作业就无法正确获取此参数。
如果某些管道过程(例如确定代理)需要这些参数,则尤其是一个问题。
这个问题进一步令人沮丧,因为在已经存在的作业上,当更改默认参数时,新作业仍将使用旧作业。但是在创建新工作时将不需要任何工作。

为了解决作业的第一次运行中的参数问题,并解决已更改的作业参数的变化,我们需要一个解决方案。 (目前,我有一个解决方法,我将其发布为答案,但我想知道是否有更好的解决方案)

评论

试试这个.. def policy = $ param.VAR_NAME?:'medium'

#1 楼

这是一个解决方案,似乎几乎是我发现的一种解决方法,该方法可用于声明性管道。我们添加的代码将在管道部分之前运行,并检查env / param是否存在,如果确实有该值,则将其赋予默认值,并将其分配给在管道期间可以访问的变量。然后,我们需要将管道代码引用从参数更改为变量。

下面的示例定义了一个任意参数,并定义了要使用的代理标签。如您所见,这些变量可以在阶段以及确定代理的过程中使用。


评论


这种解决方法实际上是目前存在的最佳解决方案。这个问题在詹金斯社区中是众所周知的。请参阅:StackOverflow上的此问题,上游错误报告

– jayhendren
18年6月13日在15:53

目前看来,这确实是效果最好的。

–tftd
19年4月24日在12:08

请注意-您可以简化变量的定义,例如def MY_VARIABLE = params.getOrDefault(“ my_parameter”,“我的默认值”)和def MY_AGENT = params.getOrDefault(“ my_agent”,“ agent_label”)。它基本上会做同样的事情,但是会使管道更易于阅读。到目前为止,它似乎按我的预期工作。

–tftd
19年4月24日在12:26