如果某些管道过程(例如确定代理)需要这些参数,则尤其是一个问题。
这个问题进一步令人沮丧,因为在已经存在的作业上,当更改默认参数时,新作业仍将使用旧作业。但是在创建新工作时将不需要任何工作。
为了解决作业的第一次运行中的参数问题,并解决已更改的作业参数的变化,我们需要一个解决方案。 (目前,我有一个解决方法,我将其发布为答案,但我想知道是否有更好的解决方案)
#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
评论
试试这个.. def policy = $ param.VAR_NAME?:'medium'