由于詹金斯1.519,入队构建与在Location
一个URL响应,指向你的项目在构建队列:
$ nc localhost 8666
POST /jenkins/job/morgRemote/buildWithParameters?jenkins_status=1&jenkins_sleep=20&token=morgRemote HTTP/1.1
Host: localhost:8666
HTTP/1.1 201 Created
Location: http://localhost:8666/jenkins/queue/item/39/
Content-Length: 0
Server: Jetty(winstone-2.8)
现在,如果您将api/json
(或api/xml
等)添加到其末尾(因此在此示例中它将是http://localhost:8666/jenkins/queue/item/39/api/json
),那么您将获得将包含给定作业的构建ID的文档。对于json,检索到的对象具有executable
属性,该属性又具有number
和url
属性。 number
是给定工作的构建ID(这里是35),url
是jenkins构建页面的url。
{
"actions" : [
{
"parameters" : [
{
"name" : "jenkins_status",
"value" : "1"
},
{
"name" : "jenkins_sleep",
"value" : "20"
}
]
},
{
"causes" : [
{
"shortDescription" : "Started by remote host 127.0.0.1",
"addr" : "127.0.0.1",
"note" : null
}
]
}
],
"blocked" : false,
"buildable" : false,
"id" : 39,
"inQueueSince" : 1423993879845,
"params" : "\njenkins_status=1\njenkins_sleep=20",
"stuck" : false,
"task" : {
"name" : "morgRemote",
"url" : "http://localhost:8666/jenkins/job/morgRemote/",
"color" : "red"
},
"url" : "queue/item/39/",
"why" : null,
"cancelled" : false,
"executable" : {
"number" : 35,
"url" : "http://localhost:8666/jenkins/job/morgRemote/35/"
}
}
知道两两件事:
- 在构建队列不活动的项目是几分钟后收集垃圾,所以你应该在默认情况下检索版本ID尽快
- 需要项目之间几秒钟被添加到队列中直到获取构建ID。在此期间,
executable
和canceled
属性将丢失,并且why
将不为空。您可以通过修改“安静期”设置或在jenkins全局配置中,在作业配置的“高级项目选项”中更改此行为。
:
...
"url" : "queue/item/39/",
"why" : "In the quiet period. Expires in 2.4 sec",
"timestamp" : 1423993879845
}
你能否详细说明如何添加'cause'参数?我搜索了Jenkins文档并找不到对此参数的任何参考。 – Muxa
这是您在通过* curl *或类似命令触发构建的URL中指定的参数。例如将该参数'cause = foo_100'添加到URL中。 – khampson
伟大的回应!在搜索唯一ID的构建历史记录时,您的触发作业执行仍在队列中时,可能存在竞争状况。您可以通过使用201创建的响应中包含的位置避免这种情况,并基本上等待它离开队列。 – jpadams