之前在給一些開源項目貢獻代碼的時候,在github
上一提交pull request
或者提交的分支代碼更新了的時候,jenkins
就會自動把代碼進行merge
而且運行單元測試,當時看了內心就2個字: NB!git
那個時候內心就想,啥時候我也得弄這麼一個高大上的玩意兒。隨着 gitlab
在工做中的逐漸使用,這個想法愈來愈強烈。上週末搜來搜去,發現jenkins還真有一款針對gitlab的merge request
的插件:Gitlab Merge Request Builder Plugingithub
當時就心癢難耐,開始看着說明一步步的配置。配置分紅2大部分:併發
首先安裝插件,要求jenkins版本大於1.563
,好在jenkins升級比較方便,在系統管理
界面就有個大大的升級按鈕,果斷升級到1.570
。maven
在 系統管理
->插件管理
->可選插件
裏面搜出來 Gitlab Merge Request Builder
安裝並重啓 jenkins,官方文檔在這裏強調了須要重啓jenkins。gitlab
重啓以後,進入系統管理
->系統設置
裏面,能發現裏裏面多了Gitlab Merge Request Builder
的配置項單元測試
Gitlab Host URL
裏填gitlab的服務地址,好比 http://192.168.0.1
測試
Jenkins Username
裏面填寫jenkins的用戶名,在這裏須要在gitlab裏面給jenkins建立一個跟你其餘小組成員同樣的帳戶,以便jenkins能在項目中發言ui
Jenkins API Token
是jenkins在getlab中帳戶的一個權限校驗碼,這個碼能夠在使用jenkins帳戶登陸gitlab後進入帳戶編輯
界面的Account
標籤頁中查到,在那裏面叫Private token
插件
Crontab line
主要是配置jenkins多久去檢查一次merge request
的變動, 默認是 */5 * * * *
即 5分鐘一次, 不過jenkins建議改爲 H/5 * * * *
貌似能夠改善併發。聽人勸吃飽飯,我把*/5
換成了H/5
至今爲止貌似還沒發現問題。調試
Enable build triggered message
是指在插件激活的時候在merge request
界面發送一條jenkins已經開始工做的消息,不過我感受,調試的時候還有點用,正常使用就有點囉嗦了。
Default success message
、Default unstable message
以及Default failure message
三個配置分別是一個成功和兩個失敗的提示消息模板,乾巴巴的字感受不是很明晰,因此能夠在裏面增長emoji表情,好比 :smiley:
或者 :broken_heart:
Ignore SSL Certificate Errors
顧名思義是忽略https
的證書錯誤,這個選項對假設在局域網內的gitlab私服頗有用,果斷勾上!
都配置好了以後不要忘記點擊 保存
按鈕
建立任務一開始和普通流程沒啥兩樣,點擊新建
建立一個新任務,而後選擇你須要的任務類型,由於我是maven項目因此我選了構建一個maven2/3項目
,填好項目名稱
點擊OK
進入到任務詳細配置頁
在這裏官方文檔上寫着若是安裝了GitHub plugin
的話,能夠在GitHub Project
欄目裏面隨便填上你的項目在Gitlab
裏面的URL,不過我沒裝這個插件,因此跳過。
找到源碼管理
欄目並選擇Git
,從這裏開始比較重點
Repository URL
和Credentials
以後,點擊高級...
按鈕,在Name
中填寫origin
forked
分支提交的merge requests
須要再額外增長一個源。點擊Add Repository
,而後將新增長的源的Repository URL
內容設置爲${gitlabSourceRepository}
,Credentials
和主源同樣,高級...
中的Name
設置爲${gitlabSourceName}
Branch Specifier
,將裏面的內容改成${gitlabSourceName}/${gitlabSourceBranch}
Additional Behaviours
點擊寫着Add
字樣的下拉列表,選擇Merge before build
Merge before build
區塊中,設置 Name of repository
的值爲 origin
,設置 Branch to merge to
的值爲 ${gitlabTargetBranch}
Prune stale remote-tracking branches
沒有被添加找到 構建觸發器
欄目
Gitlab Merge Requests Builder
打上勾Gitlab Project Path
裏面填寫項目的路徑,格式相似於 your_group/your_project
,不知道怎麼填能夠打開你的項目在git的主頁,而後參考看看URL,就是相似 http://git.tld/your_group/your_project
,注意不要把整個URL都填進去,只須要填 your_group/your_project
這部分。Target Branch Regex
,貌似是個能起到分支白名單做用的選項,若是不填則全部的正常的merge request
都能觸發這個任務。不過不知道爲何我這裏沒有找到這個選項,因此就跳過了。到這裏跟merge request
相關的配置基本就完成了,而後就是配置一下項目其餘的一些編譯選項,好比我在maven編譯的Goals and options
中填寫了clean test -U
,這樣構建就只執行到完成測試,這樣就達到了在合併代碼前先檢查其質量的目的。
一切配置完成後不要忘了點擊保存
按鈕。
至此,配置所有完成。接下來就能夠嘗試建立一個merge request
來看看是否是好使。