Jenkins:有没有办法在下拉列表中列出“标签”,以选择一个作为参数?

时间:2019-01-20 21:36:47

标签: jenkins

我希望将所有已定义的节点标签作为下拉列表,以便可以选择一个作为参数传递给构建。然后在构建中,我将遍历该标签中的所有主机。

2 个答案:

答案 0 :(得分:0)

与您要寻找的功能类似的是NodeLabel Parameter Plugin。您可以使用多节点选择或使用标签,但是不确定是否可以对标签使用下拉菜单(据我了解,下拉菜单只能用于节点)。

答案 1 :(得分:0)

这就是我终于解决的答案

使用“可扩展选择参数”作为参数(如果需要,请安装插件)
选择提供者:“系统Groovy选择参数”
不要在沙盒中运行

这是Groovy代码

import jenkins.model.*
def labelAndNodeList = []
for (label in Jenkins.getInstance().getLabels()) {
   labelAndNodeList.add(label)
}
return labelAndNodeList

再对此进行扩展...也许您已经将参数称为“标签”
现在您要遍历在管道中分配了该标签的节点

这是管道代码

def label = "${params.Label}"

listOfNodeNames = jenkins.model.Jenkins.instance.nodes.collect {
  node -> node.getLabelString().contains(label) ? node.name : null
}
listOfNodeNames.removeAll(Collections.singleton(null))

for (node_to_run_on in listOfNodeNames) {
    println "Node: ${node_to_run_on}"
    node ("${node_to_run_on}") {
        stage("Uname on ${node_to_run_on}") {
            sh ("uname -a")
        }
    }
}