本文使用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。
上述四種方法,各有優缺點,建議根據實際狀況選用合適的方式。