大俠再出招:Jenkins集成Gitlab完成自動觸發構建

一. 環境說明

  • 本文使用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-plugin
    app

二. 自動觸發的四種方式

實現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。

上述四種方法,各有優缺點,建議根據實際狀況選用合適的方式。

相關文章
相關標籤/搜索