您的位置:首页 > 其它

大侠再出招:Jenkins集成Gitlab完成自动触发构建

2020-12-21 21:25 821 查看

一. 环境说明

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

上述四种方法,各有优缺点,建议根据实际情况选用合适的方式。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: