私はJenkinsパイプラインジョブを作成しています。特定のラベルが付けられたすべてのノードでジョブを実行する必要があります。マスターノードを含むラベルが割り当てられたすべてのJenkinsノードのリストを取得するにはどうすればよいですか?
したがって、特定のラベルで割り当てられたノード名のリストを取得しようとしています。 (ノードではgetAssignedLabels()
でラベルを取得できます)
nodes
-list 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
}
'スレーブ 'は削除されます(' nodes'を使うべきです)。 'nodes'にはマスターノードが含まれていません。 –