我正在创建一个 Jenkins 管道作业,我需要在标有特定标签的所有节点上运行一个作业。
因此,我试图获取分配有特定标签的节点名称列表。(有了一个节点,我可以得到标签getAssignedLabels()
)
中的nodes
-listjenkins.model.Jenkins.instance.nodes
似乎不包含我需要在搜索中包含的主节点。
我目前的解决方案是迭代jenkins.model.Jenkins.instance.computers
并使用getNode()
- 方法来获取节点。这可行,但在 Jenkins 的 javadoc 中,我正在阅读此列表可能不是最新的。
从长远来看,我会(动态地)添加云节点,我担心那时我将无法使用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
}