jenkins+gitlab 識别merge request事件并自動合并建構
- jenkins部分的配置
-
- 1. 安裝gitlab plugin插件
- 2. 設定跟蹤source分支
- 3. 設定建構前合并分支到目标分支
- 4. 設定觸發器
- gitlab部分的設定
-
- 1. 添加webhook
- 2. 配置webhook
版本說明:
jenkins v2.234 docker方式安裝
gitlab-ce 12.10.3 docker方式安裝
jenkins部分的配置
1. 安裝gitlab plugin插件
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0zYtJGcKJDWxRmMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL4MjM5AjMxETMwEzNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2. 設定跟蹤source分支
源碼管理配置變量,動态跟蹤請求合并的分支
通路gitlab-plugin插件網站:https://github.com/jenkinsci/gitlab-plugin
可以知道通過變量gitlabSourceBranch擷取到source分支
3. 設定建構前合并分支到目标分支
Advanced checkout behaviours 用來修改checkout的逾時(工程較大時預設10min可能不夠)
Advanced clone behaviours 用來修改clone或fetch的逾時(理由同上)
Prune stale remote-tracking branch 用來跟新無效的遠端分支。
Merge before build 關鍵選項,本文的目的就是在同意merge request前建構,友善排除問題。如果目标分支需要動态擷取可以用變量gitlabTargetBranch代替
4. 設定觸發器
因為gitlab同意或者直接關閉Merge Request時不需要再次觸發建構,是以在這裡隻處理Open Merge Request Event。
Gitlab webhook URL 部分是用來配置gitlab的,
token 也是用來配置gitlab的。
filter branch by name的配置說明下:include表示需要跟蹤的target branch用逗号分隔。
其他的建構方法在此不表。
至此jenkns部分設定結束。
gitlab部分的設定
1. 添加webhook
2. 配置webhook
這裡的URL就是上面配置觸發器時的擷取
token的配置同理
配置Merge request events才觸發這個webhook
至此,目的達到,當開發人員通過gitlab 打開一個merge request時,會自動觸發jenkins合并與建構,可以通過配置jenkins的郵件提醒,建構成功後通知管理人員,這時再經過必要的代碼review後,管理人員正式同意合并代碼,此時不會再觸發建構;如果建構失敗或其他代碼review不通過,則管理人員關閉此合并請求,等待開發人員修改後重新提出申請,此時也不會觸發建構。