例如,我想列出在“Foo”作业中定义的从机:Project_Foo1,Project_Foo2等。
def matchedJobs = Jenkins.instance.items.findAll { job -> job.name =~ /Foo/ }
字符串我可以列出项目名称,但如何获得奴隶的名字?
rkue9o1l1#
一些时髦的方式
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 }
字符串
xeufq47z2#
在FindAll闭包中,job变量应该包含一个TopLevelItem示例(根据javadoc)。因此,您需要做的就是job.allJobs获取子作业的集合(javadoc),然后获取它的getName()方法。最后,
job
TopLevelItem
job.allJobs
getName()
def matchedJobs = Jenkins.instance.items.findAll { job -> job.name =~ /Foo/ } def childrenJobNames = matchedJobs.allJobs*.name
字符串应该可以工作,但我没有Jenkins示例来测试它。
wribegjk3#
可以通过getAssignedLabel()得到项目的标签表达式,通过Label的getNodes()得到满足标签表达式的节点。
getAssignedLabel()
getNodes()
def matchedJobs = Jenkins.instance.items.findAll { job -> if(job.name =~ /Foo/) { for(Node node : job.getAssignedLabel().getNodes()) { println node.getNodeName() } } }
字符串getNodeName()返回空字符串,如果它是master。http://javadoc.jenkins-ci.org/hudson/model/AbstractProject.html#getAssignedLabel()http://javadoc.jenkins.io/hudson/model/Label.html#getNodeName()http://javadoc.jenkins.io/hudson/model/Node.html#getNodeName()
getNodeName()
3条答案
按热度按时间rkue9o1l1#
一些时髦的方式
字符串
xeufq47z2#
在FindAll闭包中,
job
变量应该包含一个TopLevelItem
示例(根据javadoc)。因此,您需要做的就是
job.allJobs
获取子作业的集合(javadoc),然后获取它的getName()
方法。最后,
字符串
应该可以工作,但我没有Jenkins示例来测试它。
wribegjk3#
可以通过
getAssignedLabel()
得到项目的标签表达式,通过Label的getNodes()
得到满足标签表达式的节点。字符串
getNodeName()
返回空字符串,如果它是master。http://javadoc.jenkins-ci.org/hudson/model/AbstractProject.html#getAssignedLabel()http://javadoc.jenkins.io/hudson/model/Label.html#getNodeName()http://javadoc.jenkins.io/hudson/model/Node.html#getNodeName()