修改jenkinsfile模板使流水線支持通過git commit拉取代碼

背景

      原有的jenkinsfile模板,在創建流水線時,代碼分支這裏可以輸入master,release**,甚至正則表達式方式,實現checkout所需分支的代碼。

如上圖,原有的jenkinsfile模板,分支名可以輸入release/1.0.8這樣具體分支名,也可以輸入release**匹配release/1.0.8,release/1.0.2等分支,也可以冒號開頭的正則表達式匹配所需分支,但是不支持通過commit來checkout代碼,如果輸入特定git commit,流水線會報錯。

 

需求解決

       git原生是支持通過commit來checkout代碼的,參考jenkins官網,發現jenkinsfile的checkout方法,也是支持commit來拉取代碼的,於是修改jenkinsfile模板如下

      如上圖,在jenkinsfile模板裏面的函數,增加一個邏輯判斷,判斷分支名是否包含--commit,如果含此字段,將--commit後面的輸入當做分支名返回。經測試,可以實現commit來checkout代碼的需求。

     測試截圖如下

如上圖,checkout代碼時,按照輸入的0970fcbb0fb的git commit拉取了特定代碼,顯示爲detached模式。

 

不足

     1.需要分支名輸入這裏,通過--commit顯性表明輸入的爲git commit。參考jenkins官網,git commit和冒號開頭的分支正則表達式,都是可以直接在jenkinsfile的checkout方法直接傳入使用的,因此自定義的jenkinsfile模板裏面的分支判斷函數,git commit的判斷和第一條冒號開頭的正則表達式的判斷,是可以合併的,但是暫未找到可以匹配git commit但不匹配具體分支名的正則表達式寫法。

    2.自定義的jenkinsfile模板裏面的分支判斷函數,release**的分支匹配判斷和具體分支寫法(如release/1.0.8)的判斷,也是可以合併的。

 

參考:

https://jenkins.io/doc/pipeline/steps/workflow-scm-step/#code-checkout-code-general-scm

發佈了53 篇原創文章 · 獲贊 18 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章