动态或条件显示Jenkins作业的参数(而不是它们的值群)

Aru*_*gal 13 parameters conditional optional-parameters jenkins jenkins-plugins

假设我有两个(或更多)类型的项目:app(应用程序)和svc(服务),我创建了一个Jenkins作业(常见作业),它有很多参数.这个常见的工作可能会调用另一个下游/单个项目类型的作业(触发其他项目构建等并传递相应的参数),但这超出了这个问题的范围.

例如:
PROJ_TYPE (具有值的选择参数类型:app,svc)
Param2 (某种类型)
Param3 (级联类型,即它取决于父参数PROJ_TYPE的值).
Param4 (假设我想仅在PROJ_TYPE被选为"app"时显示此参数)
Param5 (某种类型)
Param6 (假设我只想在PROJ_TYPE被选为"svc"时显示此参数.此参数可以是任何类型,即选择,动态,扩展选择等)

如果我在Jenkins作业中有上述参数,那么Jenkins作业将在用户尝试构建时显示/提示所有参数(即使用参数构建).

只有当PROJ_TYPE参数被选为app时,Jenkins才有可能显示参数(Param4),否则我不想显示这个参数 - 或者如果有可能将它变灰?即在这种情况下,作业将只显示PROJ_TYPE,Param2,Param3,Param4和Param5(并且不会显示Param6或它被禁用/灰显).

同样,我想只显示参数(Param6),如果PROJ_TYPE参数被选为svc,否则我不想显示这个参数 - 或者某种方式如果可以将它变灰?即在这种情况下,作业将只显示PROJ_TYPE,Param2,Param3,Param5和Param6(并且不会显示Param4或它被禁用/灰显).

小智 7

我知道这是个老歌,但是我一直在寻找类似的东西,直到找到Active Choices Plugin为止。它不会隐藏参数,但是可以编写Groovy脚本(直接在Active Choices参数或Scriptler中)以返回不同的值。例如:

Groovy
if(MY_PARAM.equals(“ Foo”)){返回['NOT APPLICABLE']}

否则,如果(MY_PARAM.equals(“ Bar”)){返回['这是唯一的选择']}

否则,如果(MY_PARAM.equals(“ Baz”)){返回['Bazoo','Bazar','Bazinga']}

/ Groovy

在此示例中,MY_PARAM是Jenkins作业中的参数。只要将“ MY_PARAM”放在“主动选择”“参考参数”字段中,脚本将在任何时间更改参数时重新评估该参数,并显示匹配的返回值(或值列表)。

这样,您可以根据先前的选择返回不同的选择列表(包括一个或什至零个选择的列表),但是我还没有找到一种防止Parameter出现在Parameters页面上的方法。可能有多个Active Choice参数引用相同的参数,因此,当有人选择“ App”或“ Svc”时,所有不相关的参数将立即切换为“不适用”或任何适合您的参数。我也使用过一些HTML文本颜色,但是手边没有共享的代码示例。

短剑


Vit*_*upt 3

根据描述,您可以使用Dynamic-Jenkins-Parameter 插件来执行此操作:

一个 Jenkins 参数插件,允许两个选择元素。第二个选择根据第一个选择所做的选择来填充值。

wiki 上提供的示例完全满足您的需要(至少对于一种条件情况)。我自己没有尝试过。