本文使用jenkins版本2.7.2,gitlab版本8.4.4git
Jenkins可能须要安装gitlab-plugin、gitlab-hook-plugin和build-authorization-token-root-plugin,对应jenkins插件名为gitlab-plugin.jpi,gitlab-hook.jpi,build-token-root.jpigithub
本文使用插件版本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-pluginapp
实现gitlab代码触发jenkins job构建有以下四种方式,请按场景须要选择合适的方式。ide
gitlab hook插件,指定某个job触发gitlab
gitlab hook插件,不指定job触发ui
gitlab插件,指定job触发spa
build token root插件,指定job实现匿名远程构建插件
1) gitlab hook插件,指定某个job触发
前置条件:
安装jenkins安装gitlab hook插件
配置过程3d
在jenkins中建立job,如hook-test1code
获取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。
上述四种方法,各有优缺点,建议根据实际状况选用合适的方式。