3

我在声明性 Jenkins 管道中使用带有 JSON 参数类型的扩展选择参数。我发现它非常适合为参数提供自定义 UI,它会根据用户输入返回一个 json。

我有一个用例,其中向用户显示的选项取决于另一个参数的值。我可以使用主动选择参数来实现这样的功能,但后来我被单选按钮、复选框、html 输入等卡住了。

我在这里找到了一个合适的选项,我可以在 json 中创建一个依赖于另一个属性的属性:

{
  "title": "An object",
  "type": "object",
  "properties": {
    "fieldOne": {
      "title": "I should be changed to 'foo'",
      "type": "string",
      "enum": ["foo","bar"],
      "default": "bar"
    },
    "depender1": {
      "title": "I depend on fieldOne to be 'foo'",
      "type": "string",
      "enum": ["lorem","ipsum"],
      "options": {
        "dependencies": {
          "fieldOne": "foo"
        }
      }
    },
    "depender2": {
      "title": "I depend on fieldOne to be 'bar'",
      "type": "string",
      "enum": ["dolor", "sit"],
      "options": {
        "dependencies": {
          "fieldOne": "bar"
        }
      }
    }
  }
}

当我在这里尝试时效果很好例子

但是当我在詹金斯上尝试同样的方法时,它不起作用。它显示了所有 3 个文本框。我也看到了查看其他参数的选项,但我找不到如何将它用作我的参数的 if else。

这是一个简单的例子,我想要实现的需要一个 dropdown-1 + Array(dropdown-2 + text field+text-field) 的 UI,其中数组的文本字段取决于 dropdown-1 的值,我无法创建主动选择中的相同 UI。

有谁知道 options.dependencies 可以在 jenkins 中如何工作,或者可以使用 watch/其他插件来实现?

4

1 回答 1

0

如果我的问题是正确的,那么您希望以更智能的方式选择参数。

所以你可以通过 groovy 脚本来完成。

这是我在图片上看到的示例: freestyle job config 抱歉,但我不知道如何更好地显示 freestyle 作业配置。

所以,逻辑很简单:我在第一个参数上收集 JSON,并对其进行一些解析。然后我使用 Environmets 变量来显示它的内容,这取决于第一部分的结果。

附言。我现在正在为可变主机苦苦挣扎,因为我不知道如何在不询问用户输入的情况下在最后步骤中传递它。但我相信你知道如何做到这一点。

于 2021-07-23T10:20:46.467 回答