之前在给一些开源项目贡献代码的时候,在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
来看看是否是好使。