如何列出所选项目的jenkins从属

时间:2016-10-26 12:22:25

标签: jenkins groovy jenkins-slave

例如,我想列出在" Foo"中定义的奴隶。工作:Project_Foo1,Project_Foo2等......

def matchedJobs = Jenkins.instance.items.findAll { job ->
    job.name =~ /Foo/
}

我可以列出项目名称,但是如何获取从属名称?

3 个答案:

答案 0 :(得分:2)

一些时髦的方式

SELECT expand($Result)
let $Cri = ( SELECT * FROM Cri WHERE libelle = "abbaye"),
$Ontologie = ( SELECT * FROM Ontologie WHERE libelle = "BlocModal_3_VISITE"),
$Result = ( SELECT * FROM $Ontologie WHERE $Cri.out().@rid contains out().out().out().@rid)

答案 1 :(得分:0)

在FindAll闭包中,您的job变量应该包含TopLevelItem个实例(根据javadoc)。

所以你应该做的只是job.allJobs来获取一系列子工作(javadoc),然后是getName()方法。

最后,像

def matchedJobs = Jenkins.instance.items.findAll { job ->
  job.name =~ /Foo/
}
def childrenJobNames = matchedJobs.allJobs*.name

应该可以工作,但我没有Jenkins实例来测试它。

答案 2 :(得分:0)

您可以通过getAssignedLabel()获取项目的标签表达式。 并获得符合Label getNodes()标签表达式的节点。

def matchedJobs = Jenkins.instance.items.findAll { job ->
  if(job.name =~ /Foo/) {
    for(Node node : job.getAssignedLabel().getNodes()) {
      println node.getNodeName()
    }
  }
}

getNodeName()如果是主人,则返回空字符串。

http://javadoc.jenkins-ci.org/hudson/model/AbstractProject.html#getAssignedLabel() http://javadoc.jenkins.io/hudson/model/Label.html#getNodes() http://javadoc.jenkins.io/hudson/model/Node.html#getNodeName()