如何列出所选项目的詹金斯奴隶
How to list jenkins slaves of selected projects
例如,我想列出 "Foo" 作业中定义的从属:Project_Foo1、Project_Foo2 等...
def matchedJobs = Jenkins.instance.items.findAll { job ->
job.name =~ /Foo/
}
我可以列出项目名称,但是如何获取从名称?
在 FindAll 闭包中,您的 job
变量应该包含一个 TopLevelItem
实例(根据 javadoc)。
因此,您所要做的就是 job.allJobs
获取子作业 (javadoc) 的集合,然后获取其 getName()
方法。
最后,类似
def matchedJobs = Jenkins.instance.items.findAll { job ->
job.name =~ /Foo/
}
def childrenJobNames = matchedJobs.allJobs*.name
应该可以,但我没有 Jenkins 实例来测试它。
您可以通过getAssignedLabel()
获取项目的标签表达式。
并通过getNodes()
of Label.
获取满足label表达式的节点
def matchedJobs = Jenkins.instance.items.findAll { job ->
if(job.name =~ /Foo/) {
for(Node node : job.getAssignedLabel().getNodes()) {
println node.getNodeName()
}
}
}
getNodeName()
returns 如果是 master,则为空字符串。
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()
一些groovy方式
def matchedJobs = Jenkins.instance.items.findAll{ job ->
job.name =~ /test/ && job.getAssignedLabel() != null
}.collect { job ->
"${job.name}: ${job.getAssignedLabel().getNodes().collect({it.getNodeName()==""?"master":it.getNodeName()}).join(',')}\n"
}.each { slaves ->
println slaves
}
例如,我想列出 "Foo" 作业中定义的从属:Project_Foo1、Project_Foo2 等...
def matchedJobs = Jenkins.instance.items.findAll { job ->
job.name =~ /Foo/
}
我可以列出项目名称,但是如何获取从名称?
在 FindAll 闭包中,您的 job
变量应该包含一个 TopLevelItem
实例(根据 javadoc)。
因此,您所要做的就是 job.allJobs
获取子作业 (javadoc) 的集合,然后获取其 getName()
方法。
最后,类似
def matchedJobs = Jenkins.instance.items.findAll { job ->
job.name =~ /Foo/
}
def childrenJobNames = matchedJobs.allJobs*.name
应该可以,但我没有 Jenkins 实例来测试它。
您可以通过getAssignedLabel()
获取项目的标签表达式。
并通过getNodes()
of Label.
def matchedJobs = Jenkins.instance.items.findAll { job ->
if(job.name =~ /Foo/) {
for(Node node : job.getAssignedLabel().getNodes()) {
println node.getNodeName()
}
}
}
getNodeName()
returns 如果是 master,则为空字符串。
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()
一些groovy方式
def matchedJobs = Jenkins.instance.items.findAll{ job ->
job.name =~ /test/ && job.getAssignedLabel() != null
}.collect { job ->
"${job.name}: ${job.getAssignedLabel().getNodes().collect({it.getNodeName()==""?"master":it.getNodeName()}).join(',')}\n"
}.each { slaves ->
println slaves
}