一千萬個為什麽

搜索

Jenkins API調用(或Groovy內置)返回所有當前正在運行的作業構建列表



有很多問題詢問如何返回Jenkins實例上所有作業的列表,或者甚至要列出哪些作業當前正在運行,但我有更具體的用例。

我需要看看單個作業是否已經運行。和in一樣,如果有1個正在運行的作業,則返回一個值;如果有2個或更多的構建正在運行,則返回不同的值。

這裏的用例是,我們已經使我們的圖像創建自動化,以便在成功的單元測試之後進行構建它的設置是每7小時創建一張圖片,最後一張圖片的制作時間將會在7小時內刪除。這適用於大多數情況。但是,這些圖像需要20分鐘才能建成。如果超過7小時,並且兩次單元測試在不到20分鐘內完成,則第二個版本不會看到第一個創建,並且將繼續構建。我們獲得了兩個功能相同的圖像,每7小時制作一次,間隔只有幾分鐘。我想檢查控制器作業的狀態,以確定它是否已經運行,以便第二個版本可以知道取消。

我已經嘗試過關註下面的API,但事實證明它並沒有註冊個體構建,只是工作正常運行,在這種情況下它是無用的,因為它會自行觸發,因為它檢查意味著它已經在運行;單個構建和多個構建之間沒有區別。

http://JENKINS_URL/api/xml?tree=jobs[name,url,color]&xpath=/hudson/job[ends-with(color/text(),%22_anime%22)]&wrapper=jobs

TL; DR:是否有另一個我可以做的調用,它會返回一些列表/文件/內容,表明當前正在運行同一作業的多個版本?

轉載註明原文: Jenkins API調用(或Groovy內置)返回所有當前正在運行的作業構建列表

一共有 1 個回答:

事實證明,您可以點擊以下URL來獲取所有當前正在運行的構建的XML輸出,包括構建編號。

http://jenkinsURL/computer/api/xml?tree=computer[executors[currentExecutable[url]],oneOffExecutors[currentExecutable[url]]]&xpath=//url&wrapper=builds

grep 編寫了一個計數並用於我的計算。