1. 程式人生 > >Jenkins配置專案提交推送到不同分支時構建不同專案

Jenkins配置專案提交推送到不同分支時構建不同專案

文章目錄

1. 建立Jenkins專案

如果你是基於Maven依賴構建,可建立一個maven專案,如果不是,可建立一個自由風格專案。

2. 配置Jenkins專案

這裡我對觸發構建新外掛簡單介紹下:
如果我需要分別為git上的分支(假設為develop和master)進行構建,那麼我需要分別為兩個分支兩個專案XX-develop和XX-master,並且以第一種方式我還需在webhook上建立兩個推送,這樣每次我push,才會對這兩個專案觸發構建,但是,問題來了,假如我push到develop,但是我的master對應的jenkins專案也跟著進行了一個不必要的構建,這樣明視訊記憶體在著問題,所以我google了新的解決方案,就是採用Generic Webhook Trigger Plugin進行正則的匹配構建。
外掛對應配置如下:
image


Generic Webhook Trigger主要有: Post content parameters、 Header parameters、Request parameters和Optional filter這幾個組成。
其中,Post content parameters是對POST請求資料的處理,其他 Header parameters、Request parameters類似,在眾多變數中,我們可以篩選到一個具有標識分支的變數,ref。
當我們push到develop時,WebHook推送的資訊中,ref為refs/heads/develop,而push到master是ref則為refs/heads/master,所以使用Generic Webhook Trigger Plugin則可以通過正則對推送內容中的ref進行匹配構建,如上圖所示。
WEB HOOK推送的請求頭示例:
image

3. 設定Web Hook

gitea的Web hook在倉庫設定中,建立一個Gogs的WebHOOK,因為jenkins還未支援Gitea的WebHook。
image
接著填寫推送地址,因為我用的觸發構建操作的外掛是Generic Webhook Trigger,它的推送地址格式是
http://[host]/generic-webhook-trigger/invoke?token=abc123
此處的Token比較重要,用來區分專案,可為不同專案建立一個唯一的Token,通常token設定如下圖所示:
image
如果你還嫌不夠安全,可以在為觸發構建新增一個Secret,對應的jenkins設定處如下圖:
image

4. 測試push觸發自動構建

image
點選測試推送,即可傳送一條測試推送,如果配置沒問題,jenkins會接受到該推送並用正則過濾找到特定專案,觸發一系列操作。

注意事項:

gradle專案接入jenkins,因為develop分支對應的專案版本要為latest,這個映象構建出來的才為latest,所以需要為build.gradle新增version設定,如:

if (project.hasProperty('projVersion')) {
  project.version = project.projVersion
} else {
  project.version = '10.0.0'
}

構建時便可以動態改變版本了。

gradle -PprojVersion=latest build   

需要匯入本地jar時,有兩種方法:

  1. 傳統方法,直接拉到jenkins所在伺服器,進行手動導包。
  2. 建立Jenkins專案,進行自動構建並執行匯入倉庫命令。