2017-10-25 8 views
0

젠킨스 파이프 라인 작업을 만들고 특정 레이블로 레이블이 지정된 모든 노드에서 작업을 실행해야합니다.마스터 노드를 포함하여 레이블이 지정된 모든 젠킨스 노드 목록을 얻는 방법은 무엇입니까?

따라서 특정 레이블이 할당 된 노드 이름 목록을 얻으려고합니다. (노드가있는 경우 getAssignedLabels()으로 레이블을 얻을 수 있습니다)

-list of jenkins.model.Jenkins.instance.nodes에는 검색에 포함해야하는 마스터 노드가 포함되어 있지 않은 것으로 보입니다.

내 현재 해결 방법은 jenkins.model.Jenkins.instance.computers을 반복하고 getNode() -method를 사용하여 노드를 가져 오는 것입니다. 이 기능은 작동하지만 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

'slaves'가 삭제되고 ('nodes'를 사용해야합니다),'nodes'는 마스터 노드를 포함하지 않습니다. –