Jenkins パイプライン ジョブを作成していますが、特定のラベルが付いたすべてのノードでジョブを実行する必要があります。
したがって、特定のラベルが割り当てられたノード名のリストを取得しようとしています。(ノードを使用すると、ラベルを取得できますgetAssignedLabels()
)
のnodes
リストにjenkins.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
}