我在詹金斯工作。我們自己的觸發器的網站通過REST API來構建這項工作。有時我們想中止構建。有時候,它可能在構建開始之前。在這種情況下,我們有queueItem#而不是build#。如何通過REST API停止Jenkins中的構建?
如何通過REST API來實現?
我在詹金斯工作。我們自己的觸發器的網站通過REST API來構建這項工作。有時我們想中止構建。有時候,它可能在構建開始之前。在這種情況下,我們有queueItem#而不是build#。如何通過REST API停止Jenkins中的構建?
如何通過REST API來實現?
如果構建已經開始,由POST
上:
http://<Jenkins_URL>/job/<Job_Name>/<Build_Number>/stop
將停止/取消當前的版本。
如果構建還沒有開始,你有queueItem
,上然後POST
:
http://<Jenkins_URL>/queue/cancelItem?id=<queueItem>
這是假設你的詹金斯服務器尚未固定,否則你需要添加BASIC authentication爲用戶提供取消特權。
其實這個問題已經回答了。所以我會補充,如何找到id=<queueItem>
,我一直在尋找這個解決方案,這將有助於他人。
所以,你可以得到<queueItem>
,通過 - http://jenkins:8081/queue/api/json
樣本輸出將是JSON類型的像這樣的 -
[{"_class":"hudson.model.Cause$RemoteCause","shortDescription":"Started by remote host 172.18.0.2","addr":"172.18.0.2","note":null}]}],"blocked":false,"buildable":false,"id":117,"inQueueSince":16767552,"params":"\nakey\t=AKIQ\nskey=1bP0RuNkr19vGze/bcb4ijDqVr8o\nnameofr=us\noutputtype=json\noid=284102\nadminname=admin","stuck":false,"task"
你必須採取"id":117
,並解析到 - queueItem =117
。
http://<Jenkins_URL>/queue/cancelItem?id=queueItem
也許你想遠程發送POST HTTP請求停止正在運行的構建,有一個線索僅供參考,詹金斯的工作可以停止其他作業(運行編譯),像任何詹金斯管理員時單擊X按鈕工作正在運行。
完成
非常感謝您爲您的用戶回覆。第一個命令運行良好。然而,第二個返回404。你有什麼想法會出錯嗎?順便說一下,你是否有指向該部分API的文檔的指針,因爲我找不到它。 – Barth
我剛剛意識到,隊列的命令確實會從隊列中移除項目,但仍返回404。這很奇怪。 – Barth
同意。不幸的是,Jenkins在這部分沒有明確的文檔。 404有線,雖然它取消了從隊列構建。但是您可以使用「http:///job///api」找到一些文檔,並且您可以將「/ api」添加到很多url並獲得顯示其「REST API」的頁面。 –