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

标签 jenkins parameters conditional jenkins-plugins optional-parameters

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

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

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

仅当 PROJ_TYPE 参数选择为 时,Jenkins 是否可以显示参数 (Param4)应用 否则,我根本不想显示此参数-或者以某种方式是否可以将其变灰?即在这种情况下,作业将仅显示 PROJ_TYPE、Param2、Param3、Param4 和 Param5( 并且不会显示 Param6 或者它被禁用/灰显 )。

同样,我只想在 PROJ_TYPE 参数选择为 时才显示参数 (Param6)服务端 否则,我根本不想显示此参数-或者以某种方式是否可以将其变灰?即在这种情况下,作业将仅显示 PROJ_TYPE、Param2、Param3、Param5 和 Param6( 并且不会显示 Param4 或者它被禁用/灰显 )。

最佳答案

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

时髦的
if (MY_PARAM.equals("Foo")) {return ['NOT APPLICABLE']}

else if (MY_PARAM.equals("Bar")) {return ['这是唯一的选择']}

else if (MY_PARAM.equals("Baz")) {return ['Bazoo', 'Bazar', 'Bazinga']}

/时髦

在此示例中,MY_PARAM 是 Jenkins 作业中的参数。只要您将 'MY_PARAM' 放在 Active Choices 'Referenced Parameters' 字段中,脚本将在参数更改时重新评估参数并显示匹配的返回值(或值列表)。

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

短剑

关于jenkins - Jenkins 作业参数的动态或条件显示(而不是它们的值总体),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30513679/

相关文章:

html - Angular - 使用 *ngfor 时未定义的属性,(更改)

excel - 表中比较条件

conditional - 如何单独为ansible模块的单个选项设置条件

java - Java 中的#ifdef#ifndef

docker - 运行 Jenkins Pipeline Slave 时如何升级 docker 服务器版本

Jenkins 脚本管道 : Unable to print variables inside shell and set variable values in shell

batch-file - 如何使用jenkins在命令提示符中运行Grails

C++如何从函数返回和收集地址

ubuntu - 无法从浏览器ERR_CONNECTION_TIMED_OUT访问Jenkins

parameters - TeamCity 构建状态参数