原 薦 Gitlab Merge Request Builder Plugin 配置小記
發(fā)表于1年前(2014-07-09 00:46)
閱讀(1779) | 評(píng)論( 1)
4人收藏此文章,
我要收藏
贊0
7月18日 杭州 OSC 源創(chuàng)會(huì) —— 開(kāi)源的 Swift 2.0
摘要
以前在給一些開(kāi)源項(xiàng)目貢獻(xiàn)代碼的時(shí)候,在github上一提交pull request或者提交的分支代碼更新了的時(shí)候,jenkins就會(huì)自動(dòng)把代碼進(jìn)行merge并且運(yùn)行單元測(cè)試,當(dāng)時(shí)看了心里就2個(gè)字: NB!
那個(gè)時(shí)候心里就想,啥時(shí)候我也得弄這么一個(gè)高大上的玩意兒。隨著 gitlab 在工作中的逐漸使用,這個(gè)想法越來(lái)越強(qiáng)烈。上周末搜來(lái)搜去,發(fā)現(xiàn)jenkins還真有一款針對(duì)gitlab的merge request的插件:Gitlab Merge Request Builder Plugin
當(dāng)時(shí)就心癢難耐,開(kāi)始看著說(shuō)明一步步的配置。
以前在給一些開(kāi)源項(xiàng)目貢獻(xiàn)代碼的時(shí)候,在github 上一提交pull request 或者提交的分支代碼更新了的時(shí)候,jenkins 就會(huì)自動(dòng)把代碼進(jìn)行merge 并且運(yùn)行單元測(cè)試,當(dāng)時(shí)看了心里就2個(gè)字: NB!
那個(gè)時(shí)候心里就想,啥時(shí)候我也得弄這么一個(gè)高大上的玩意兒。隨著 gitlab 在工作中的逐漸使用,這個(gè)想法越來(lái)越強(qiáng)烈。上周末搜來(lái)搜去,發(fā)現(xiàn)jenkins還真有一款針對(duì)gitlab的merge request 的插件:Gitlab Merge Request Builder Plugin
當(dāng)時(shí)就心癢難耐,開(kāi)始看著說(shuō)明一步步的配置。配置分成2大部分:
第一部分: 安裝插件&基礎(chǔ)設(shè)置
首先安裝插件,要求jenkins版本大于1.563 ,好在jenkins升級(jí)比較方便,在系統(tǒng)管理 界面就有個(gè)大大的升級(jí)按鈕,果斷升級(jí)到1.570 。
在 系統(tǒng)管理 ->插件管理 ->可選插件 里面搜出來(lái) Gitlab Merge Request Builder 安裝并重啟 jenkins,官方文檔在這里強(qiáng)調(diào)了需要重啟jenkins。
重啟之后,進(jìn)入系統(tǒng)管理 ->系統(tǒng)設(shè)置 里面,能發(fā)現(xiàn)里里面多了Gitlab Merge Request Builder 的配置項(xiàng)
Gitlab Host URL 里填gitlab的服務(wù)地址,比如http://192.168.0.1
Jenkins Username 里面填寫(xiě)jenkins的用戶(hù)名,在這里需要在gitlab里面給jenkins創(chuàng)建一個(gè)跟你其他小組成員一樣的賬戶(hù),以便jenkins能在項(xiàng)目中發(fā)言
Jenkins API Token 是jenkins在getlab中賬戶(hù)的一個(gè)權(quán)限校驗(yàn)碼,這個(gè)碼可以在使用jenkins賬戶(hù)登錄gitlab后進(jìn)入賬戶(hù)編輯 界面的Account 標(biāo)簽頁(yè)中查到,在那里面叫Private token
Crontab line 主要是配置jenkins多久去檢查一次merge request 的變更, 默認(rèn)是 */5 * * * * 即 5分鐘一次, 不過(guò)jenkins建議改成 H/5 * * * * 貌似可以改善并發(fā)。聽(tīng)人勸吃飽飯,我把*/5 換成了H/5 至今為止貌似還沒(méi)發(fā)現(xiàn)問(wèn)題。
Enable build triggered message 是指在插件激活的時(shí)候在merge request 界面發(fā)送一條jenkins已經(jīng)開(kāi)始工作的消息,不過(guò)我感覺(jué),調(diào)試的時(shí)候還有點(diǎn)用,正常使用就有點(diǎn)啰嗦了。
Default success message 、Default unstable message 以及Default failure message 三個(gè)配置分別是一個(gè)成功和兩個(gè)失敗的提示消息模板,干巴巴的字感覺(jué)不是很明晰,所以可以在里面增加emoji表情,比如 :smiley: 或者 :broken_heart:
Ignore SSL Certificate Errors 顧名思義是忽略https 的證書(shū)錯(cuò)誤,這個(gè)選項(xiàng)對(duì)假設(shè)在局域網(wǎng)內(nèi)的gitlab私服很有用,果斷勾上!
都配置好了之后不要忘記點(diǎn)擊 保存 按鈕
第二部分: 創(chuàng)建任務(wù)
創(chuàng)建任務(wù)一開(kāi)始和普通流程沒(méi)啥兩樣,點(diǎn)擊新建 創(chuàng)建一個(gè)新任務(wù),然后選擇你需要的任務(wù)類(lèi)型,因?yàn)槲沂莔aven項(xiàng)目所以我選了構(gòu)建一個(gè)maven2/3項(xiàng)目 ,填好項(xiàng)目名稱(chēng) 點(diǎn)擊OK 進(jìn)入到任務(wù)詳細(xì)配置頁(yè)
在這里官方文檔上寫(xiě)著如果安裝了GitHub plugin 的話(huà),可以在GitHub Project 欄目里面隨便填上你的項(xiàng)目在Gitlab 里面的URL,不過(guò)我沒(méi)裝這個(gè)插件,所以跳過(guò)。
找到源碼管理 欄目并選擇Git ,從這里開(kāi)始比較重點(diǎn)
- 按照常規(guī)填寫(xiě)了
Repository URL 和Credentials 之后,點(diǎn)擊高級(jí)... 按鈕,在Name 中填寫(xiě)origin
- 為了支持從其他
forked 分支提交的merge requests 需要再額外增加一個(gè)源。點(diǎn)擊Add Repository ,然后將新增加的源的Repository URL 內(nèi)容設(shè)置為${gitlabSourceRepository} ,Credentials 和主源一樣,高級(jí)... 中的Name 設(shè)置為${gitlabSourceName}
- 找到
Branch Specifier ,將里面的內(nèi)容改為${gitlabSourceName}/${gitlabSourceBranch}
- 找到
Additional Behaviours 點(diǎn)擊寫(xiě)著Add 字樣的下拉列表,選擇Merge before build
- 在新彈出的
Merge before build 區(qū)塊中,設(shè)置 Name of repository 的值為 origin ,設(shè)置 Branch to merge to 的值為 ${gitlabTargetBranch}
- 官方文檔在這里有一個(gè)提示,說(shuō)要保證
Prune stale remote-tracking branches 沒(méi)有被添加
找到 構(gòu)建觸發(fā)器 欄目
- 把
Gitlab Merge Requests Builder 打上勾
- 在
Gitlab Project Path 里面填寫(xiě)項(xiàng)目的路徑,格式類(lèi)似于 your_group/your_project ,不知道怎么填可以打開(kāi)你的項(xiàng)目在git的主頁(yè),然后參考看看URL,就是類(lèi)似 http://d/your_group/your_project ,注意不要把整個(gè)URL都填進(jìn)去,只需要填 your_group/your_project 這部分。
- 官方文檔中還提到了
Target Branch Regex ,貌似是個(gè)能起到分支白名單作用的選項(xiàng),如果不填則所有的正常的merge request 都能觸發(fā)這個(gè)任務(wù)。不過(guò)不知道為什么我這里沒(méi)有找到這個(gè)選項(xiàng),所以就跳過(guò)了。
到這里跟merge request 相關(guān)的配置基本就完成了,然后就是配置一下項(xiàng)目其他的一些編譯選項(xiàng),比如我在maven編譯的Goals and options 中填寫(xiě)了clean test -U ,這樣構(gòu)建就只執(zhí)行到完成測(cè)試,這樣就達(dá)到了在合并代碼前先檢查其質(zhì)量的目的。
一切配置完成后不要忘了點(diǎn)擊保存 按鈕。
|