大侠再出招:Jenkins集成Gitlab完成自动触发构建
作者:互联网
一. 环境说明
本文使用jenkins版本2.7.2,gitlab版本8.4.4
Jenkins可能需要安装gitlab-plugin、gitlab-hook-plugin和build-authorization-token-root-plugin,对应jenkins插件名为gitlab-plugin.jpi,gitlab-hook.jpi,build-token-root.jpi
本文使用插件版本gitlab plugin 1.5.2,gitlab hook plugin 1.4.2,build authorization token root plugin 1.4,插件最好安装最新版,避免某些功能缺失。
插件github地址:
gitlab plugin:https://github.com/jenkinsci/gitlab-plugin
gitlab hook plugin: https://github.com/jenkinsci/gitlab-hook-plugin
build authorization token root plugin:https://github.com/jenkinsci/build-token-root-plugin
二. 自动触发的四种方式
实现gitlab代码触发jenkins job构建有如下四种方式,请按场景需要选择合适的方式。
gitlab hook插件,指定某个job触发
gitlab hook插件,不指定job触发
gitlab插件,指定job触发
build token root插件,指定job实现匿名远程构建
三. 各种方式介绍
1) gitlab hook插件,指定某个job触发
前置条件:
安装jenkins安装gitlab hook插件
配置过程
在jenkins中创建job,如hook-test1
获取jenkins登录用户的token
导航到用户状态页面查看在gitlab指定的仓库中配置hook,格式如下:
http://<jenkins_username>:<jenkins_user_token>@<jenkins_server_ip>/job/<job_name>/build
特点说明
该方法可以触发构建某个jenkins job,缺点是无法设定触发构建的分支,任何分支的代码变动都会导致job构建,这样就会导致featrue分支提交代码,而构建其他分支的job。
可触发自由风格和Pipeline类型的job。
2) gitlab hook插件,不指定job触发
前置条件:
安装jenkins安装gitlab hook插件
配置过程
在jenkins中创建job,如hook-test2
job必须设置source部分使用git获取jenkins登录用户的token,方法如上文所述
在gitlab指定的仓库中配置hook,格式如下:
http://<jenkins_username>:<jenkins_user_token>@<jenkins_server_ip>/gitlab/build_now
特点说明
该方法不需要指定jenkins job名称,但必须配合git source使用,可以设定触发构建的分支,依赖与git source中配置的分支。
仅可触发自由风格类型的job。
3) gitlab插件,指定job触发
前置条件:
安装gitlab-hook和gitlab插件
配置过程
在jenkins中创建job,如hook-test3
获取jenkins登录用户的token,方法如上文所述
在gitlab指定的仓库中配置hook,格式如下:
http://<jenkins_username>:<jenkins_user_token>@<jenkins_server_ip>/project/<jenkins_job_name>
jenkins配置插件
获取gitlab 用户的access token,按如下步骤生成:
将生成gitlab access token,添加到jenkins的证书中,选择Gitlab API token类型:
进入jenkins系统管理——系统设置——Gitlab,配置如下信息:
进入jenkins job界面配置触发条件:
详细参数参见官方说明
特点说明
该方法指定触发jenkins job的名称,使用gitlab plugin配置触发的分支以及触发的event,分支配置支持全部分支、固定分支名称、分支名通配符匹配、分支label四种。在使用分支名通配符匹配时,通过gitBranch变量获取当前触发job的分支名称
可触发自由风格和pipeline类型的job。优先选择此种方式。
4) build token root插件,指定job实现匿名远程构建
前置条件:
安装build authorization token root plugin插件
配置过程
在jenkins中创建job,如hook-test4
获取jenkins登录用户的token,方法如上文所述
生成一个jenkins job需要的远程构建token
# openssl rand -hex 12
9c9d5f83e45e73a3df378025在gitlab指定的仓库中配置hook,格式如下:
http://<jenkins_username>:<jenkins_user_token>@<jenkins_server_ip>/buildByToken/build?job=<job_name>&token=9c9d5f83e45e73a3df378025
特点说明
该方法可指定触发jenkins job的名称,可以实现匿名触发构建。缺点是任何分支的代码变动都会触发构建。
可触发自由风格和pipeline类型的job。
上述四种方法,各有优缺点,建议根据实际情况选用合适的方式。
标签:大侠,插件,gitlab,Gitlab,token,hook,job,jenkins,Jenkins 来源: https://blog.51cto.com/15061931/2568969