如何从Jenkins中的active choices被动参数引用节点参数

如何从Jenkins中的active choices被动参数引用节点参数,jenkins,groovy,jenkins-plugins,Jenkins,Groovy,Jenkins Plugins,我基本上想根据从节点参数选择驱动一组选择参数。我尝试使用active choices被动插件指向节点选择,如下所示: if (Node.contains("name_of_slave_node")) { return ["you_chose_slave_node"] } else { return ["master"] } 我所做的一切似乎都不管用。我可以使用这种类型的逻辑,并指向任何其他类型的参数,它是有效的。我只是有点不知道该怎么办。这可能是插件的局限性,还是groovy在处理节点

我基本上想根据从节点参数选择驱动一组选择参数。我尝试使用active choices被动插件指向节点选择,如下所示:

if (Node.contains("name_of_slave_node")) {
  return ["you_chose_slave_node"]
} else {
  return ["master"]
}

我所做的一切似乎都不管用。我可以使用这种类型的逻辑,并指向任何其他类型的参数,它是有效的。我只是有点不知道该怎么办。这可能是插件的局限性,还是groovy在处理节点参数时遗漏了什么。我非常感谢您的建议。

您可能很难了解插件的工作原理。即使是现在,我仍然对用户应用插件的所有情况以及他们使用插件的不同方式感到惊讶

你绝对可以做你想做的事。该插件执行一个Groovy脚本,该脚本必须返回一个数组,其中包含要在UI上显示的值。您还可以使用插件尝试为您提供的一些辅助变量。其中一个变量是詹金斯项目

如果在项目中指定了标签,则可以通过编程方式基于指定给项目(或节点对象…)的节点标签返回值

这里有一个非常简单的例子

assignedNode = jenkinsProject.getAssignedLabelString()
list = []
if (assignedNode == null) {
    // do something
} else if (assignedNode.equals('abc')) {
    // ...
}
return list
此处assignedNode将具有节点的字符串名称,如果没有,则为null。如果改用jenkinsProject.getAssignedLabel(),则将不会有字符串,而是一个字符串

如果需要进一步定制,最好的方法是深入研究JavaAPI,然后自下而上构建Groovy脚本。或者尝试在线查找示例(Jenkins和Groovy有很多),并根据您的参数调整它们

希望有帮助, 布鲁诺