我正在创建Jenkins管道作业,并且需要在所有带有特定标签的节点上运行作业。
因此,我试图获取分配有特定标签的节点名称的列表。(有了一个节点,我可以使用来获得标签getAssignedLabels())
getAssignedLabels()
中的nodes-list jenkins.model.Jenkins.instance.nodes似乎不包含我需要包含在搜索中的主节点。
nodes
jenkins.model.Jenkins.instance.nodes
我当前的解决方案是遍历- jenkins.model.Jenkins.instance.computers并使用getNode()-method获取节点。这行得通,但是在Jenkins的javadoc中,我正在阅读此列表,可能不是最新的。
jenkins.model.Jenkins.instance.computers
getNode()
从长远来看,我将(动态地)添加云节点,恐怕届时我将无法使用computers。
computers
正确获取所有当前节点的列表是什么?
这就是我现在正在做的:
@NonCPS def nodeNames(label) { def nodes = [] jenkins.model.Jenkins.instance.computers.each { c -> if (c.node.labelString.contains(label)) { nodes.add(c.node.selfLabel.name) } } return nodes }
这就是我现在正在做的方式。我还没有发现其他东西:
@NonCPS def hostNames(label) { def nodes = [] jenkins.model.Jenkins.get.computers.each { c -> if (c.node.labelString.contains(label)) { nodes.add(c.node.selfLabel.name) } } return nodes }
jenkins.model.Jenkins.get.computers 包含主节点和所有从节点。
jenkins.model.Jenkins.get.computers