我正在创建Jenkins管道作业,需要在所有打上特定标签的节点上运行作业。
因此,我试图获取分配有某个标签的节点名称列表。 (使用节点可以使用
getAssignedLabels() 获取标签)
jenkins.model.Jenkins.instance.nodes 中的 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
}
nodeList = nodesByLabel label: 'LABEL1||LABEL2&&!ANOTHER', offline: true
- Steven the Easily Amused