2017-10-25 14 views
0

私は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 
} 

答えて

0

は、あなたのすべてのノードのためのすべてのラベルを取得するために for (aSlave in hudson.model.Hudson.instance.slaves) {}aSlave.getLabelString());を使用してみてください:

これは私が今やっているものです。この方法でラベルごとのノードのリストを作成できます。

+0

'スレーブ 'は削除されます(' nodes'を使うべきです)。 'nodes'にはマスターノードが含まれていません。 –

関連する問題