如何使用groovy脚本获得jenkins中特定作业的所有构建编号?

如何使用groovy脚本获得jenkins中特定作业的所有构建编号?,jenkins,groovy,jenkins-plugins,Jenkins,Groovy,Jenkins Plugins,我使用的是ActiveChoice插件,它有一个groovy脚本,可以检索Jenkins中所有作业的名称。我可以编写一个groovy脚本,让我列出该特定作业的所有版本号。试试: def xml=new XmlSlurper().parse("http:{serverName}/Jenkins/rssLatest") def projects = xml.entry.collect{(it.title as String).split("#")[0].trim()} println project

我使用的是ActiveChoice插件,它有一个groovy脚本,可以检索Jenkins中所有作业的名称。我可以编写一个groovy脚本,让我列出该特定作业的所有版本号。

试试:

def xml=new XmlSlurper().parse("http:{serverName}/Jenkins/rssLatest")
def projects = xml.entry.collect{(it.title as String).split("#")[0].trim()}
println projects
一般来说,我建议浏览jenkins提要以获取您想要的信息,然后查找“rss提要”——然后将该rss URL放入XmlSlurper,看看您得到了什么


我也倾向于在groovysh中处理这些事情,这使得探索对象如何工作变得非常容易。在这种情况下,您可能还希望在groovysh中尝试对象时查看原始XML。

为了使用active choice插件获取特定作业的生成列表,您可以使用以下示例

首先,创建用于检索作业名称的活动选项参数:

然后创建一个活动的选项参数,用于从所选作业中检索内部版本号:

我会浏览一下REST-API(因为我知道它在那里工作):

http:///api/xml?tree=jobs[name,builds[result,description,id,number,url,timestamp]&pretty=true&xpath=hudson/job[name='']&wrapper=jobs

这会导致如下结果:

<jobs>
    <job _class="...">
        <name>JOBNAME</name>
        <build _class="...">
            <id>66</id>
            <number>66</number>
            <result>FAILURE</result>
            <timestamp>1489717287702</timestamp>
            <url>JOB_URL</url>
        </build>
        ...
    </job>
<jobs>
否则类似的东西也应该可以工作——即使我还没有测试过它

import jenkins.model.*

for(item in Jenkins.instance.items) {
    if ("JOBNAME".equals(item.name)) {
        // do something with $item.builds
        // foreach item.builds -> ...
    }
}

这应该是可能的。我建议你去看看。您可以使用许多API。您已经尝试了什么?我尝试使用active Choice被动参数和groovy脚本来获取所选作业的所有内部版本号def getAllBuildNumbers(作业){(作业.getBuilds())。每个{build->buildNumbers打印内部版本号}但无法检索版本号如果您正在寻找groovy脚本,请签出此答案及其注释作为此答案的补充:
import jenkins.model.*

for(item in Jenkins.instance.items) {
    if ("JOBNAME".equals(item.name)) {
        // do something with $item.builds
        // foreach item.builds -> ...
    }
}