由於詹金斯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