jenkins - 我如何使用指定的参数在 jenkins 中获取最新版本

标签 jenkins jenkins-cli

我的目标是获取具有特定参数的最新 Jenkins 作业(作业名称 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 在 Jenkins 上的存储位置。有人可以告诉我吗?

最佳答案

如果您确实需要使用 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 .

替代方法

要回答您最初的问题“我这样做的唯一原因是当我从我的脚本触发时 jenkins 不返回内部版本号,”

您可以做的是使用“-i”参数运行 curl。当你这样做时,你应该看到一个队列项目 id # 返回。

例如:
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>

关于jenkins - 我如何使用指定的参数在 jenkins 中获取最新版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38986194/

相关文章:

maven - 如何在 Jenkins Maven 作业中发布 Scalastyle 结果?

jenkins jnlp从属代理拒绝监听端口

docker - 我如何通过docker启动我的jenkins-cli?

Jenkins JIRA 插件问题

xml - 需要 XSL 文件将内部 xml 测试格式转换为 Junit 格式(jenkins 的 xUnit 插件)

android - 从 Jenkins 运行时未找到“assembleDebug”任务

svn - 将文件从 Jenkins 工作区提交到 SVN

Jenkins 动态触发另一个构建/项目

java - 禁用 Jenkins 作业 x 小时

java - 为什么从 Docker 镜像的 jar 文件已损坏?