文章目錄
Jenkins 如何取得上次編譯成功的時間
之前曾經在 Jenkins 2 將其他 job 名稱變成可選擇的參數 介紹過該如何把其他 job name 當做參數,經過一段時間的發展,job 默默地成長到 70-80 個,已經很難一眼就找到所需 job 的地步,所以同事給了新的需求,將上次成功編譯時間是今天的 job 預設勾選,降低人為漏看的機會
如何取得上次編譯成功的時間
groovy 語法如下
import jenkins.model.Jenkins def item = Jenkins.instance.getItem("jobname")//jobname 請換成你實際的 job name def lastSuccess=item.getLastSuccessfulBuild().getTime() println "${lastSuccess}"
建議可以使用 build step 來進行開發及 debug
安裝 groovy plugin
在 build step 測試語法
import jenkins.model.Jenkins def item = Jenkins.instance.getItem("A01-TestDev") def lastSuccess=item.getLastSuccessfulBuild().getTime() println "${lastSuccess}"
結果
預設勾選
這個部份 Extended Choice Parameter plugin 已經為我們設想到了,在原本設定 source value 的下方就提供 source for default value 的設定,設定方式與 source for value 相同,一樣可以使用 groovy
Choose Source for Default Value
這邊使用 inline groovy script (Default Groovy Script)
import jenkins.model.Jenkins def result= [] def jobs = jenkins.model.Jenkins.instance.getJobNames() def matchjobs = jobs .findAll{ name -> name =~ /(A|B|C)\d{2}.*/ } matchjobs.each { def today = new Date().format("yyyyMMdd") def item = Jenkins.instance.getItem("${it}") def lastSuccess=item.getLastSuccessfulBuild().getTime().format("yyyyMMdd") def output=today.equals(lastSuccess) if(output) { result.add("${it}") } } return result
加入 groovy 後,記得要同意執行 groovy script
Build with Parameters 會出現需要同意提示
Approve
前後對照
設定前
設定後
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-02
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。