我如何获得具有指定参数的jenkns的最新版本

时间:2016-08-16 23:57:14

标签: jenkins jenkins-cli

我的目标是使用特定参数获取最新的Jenkins工作(jobname hanna)。

我执行此操作的唯一原因是,当我从脚本触发时,Jenkins不会返回内部版本号,所以我必须传入一个参数,但我必须能够在以后查询该参数

现在我有了这个,它没有返回构建ID:

curl -X POST 'http://server:8080/api/xml?tree=jobs[name,builds[actions[parameters[name,value]]]]&xpath=/hudson/job[build/action/parameter[name="snapshot"][value="bb"]]&pretty=true'

我得到一份这样的工作清单:

<job><name>hanna</name><build><action><parameter><name>snapshot</name><value>bb</value></parameter></action><action/><action/><action/><action/></build><build><action><parameter><name>snapshot</name><value>bb</value></parameter></action><action/><action/><action/><action/></build><build><action><parameter><name>snapshot</name><value>aa</value></parameter></action><action/><action/><action/><action/><action/></build><build><action/><action/><action/><action/></build></job>⏎  

这不是我想要的,因为我想要使用参数snapshot=bb的最新hanna实例,这也返回snap=aa,而且我也无法弄清楚构建ID的位置存储在詹金斯。有人能告诉我吗?

1 个答案:

答案 0 :(得分:1)

如果您绝对需要使用Jenkins Rest api调用来查询包含特定构建参数的特定构建号,请使用以下查询:

http://localhost:8080/job/MyJenkinsJob/api/xml?tree=builds[actions[parameters[value]],number]&xpath=//build[action[parameter[value="MyParameterValue"]]]/number

这应该返回类似:

<number>49</number>

如果您想了解有关XPath过滤的更多信息,请参阅一些示例here

替代方法

要回答你原来的问题&#34;我这样做的唯一原因是jenkins在我从我的脚本触发时不会返回内部版本号,&#34;

你可以做的是使用&#34; -i&#34;参数。执行此操作时,您应该看到队列项ID #reverts返回。

例如:
curl -X POST -i http//localhost:8080/job/test123/buildWithParameters?aaa=ABC

<强>返回:
HTTP / 1.1 201创建
日期:2016年8月17日星期三03:15:28 GMT
X-Content-Type-Options:nosniff
地点:http://localhost:8080/queue/item/44/
内容长度:0
服务器:Jetty(9.2.z-SNAPSHOT)

有了这个队列ID,您可以通过以下方式获取内部版本号:
http://localhost:8080/queue/item/44/api/xml

哪个应返回带有您要查找的数字的XML。

例如:

<leftItem>
   ...
   <executable _class="hudson.model.FreeStyleBuild">
      <number>11</number>
      <url>http://localhost:8080/job/test123/11/</url>
    </executable>
</leftItem>