基于Gitlab钩子提交合并代码触发jenkins构建

基于Gitlab钩子提交合并代码触发jenkins构建

背景需求:

  最近公司在搞流水线集成,gitlab 和 jenkins 的自动构建的任务自然落在了我们运维的头上,之前发布开发和测试环境都是辛苦由我们的测试大大手动点的,公司项目越来越多,发现每次手动点,效率不高。本文基于gitlab的钩子自动触发jenkins构建,已达到自动发布的目的【仅用于开发和测试环境】

环境:

  • Jenkins 2.303.2
  • GitLab Enterprise Edition 11.10.4-ee
  • jenkins 插件 Generic Webhook Trigger Plugin

先说下坑 [某一博主发现的,后来实验验证是符合的]

2022.01.21更新:去除GitLab webhook的合并请求事件及移除gitlab插件触发器无效合并请求配置。原因是合并请求创建时会误触发。实验发现合并请求审批者同意合并时发起的是push请求,去除后不影响需要。

基于Gitlab钩子提交合并代码触发jenkins构建

工作流程

基于Gitlab钩子提交合并代码触发jenkins构建

  如图,GitLab 在开发者推送或合并代码到 指定分支,触发 webhook,向 webhook URL 发送一个 HTTP 请求(即 Jenkins 流水线配置触发器的地址),Jenkins 获得构建任务,判断 构建任务分支是否为指定分支,流水线触发器启动构建并自动化发布

需要配置如下内容

  • jenkins 安装Generic Webhook Trigger Plugin 插件
  • jenkins 配置流水线【自由风格 and pipeline 流水线】
  • Gitlab 配置项目集成钩子,并绑定 webhook

步骤一:安装jenkins Generic Webhook Trigger Plugin 插件

基于Gitlab钩子提交合并代码触发jenkins构建

步骤二: 配置流水线 【自由风格 项目类型】

  • Build when a change is pushed to GitLab. GitLab webhook URL: XXXXXXXXXXXX , 记住这个URL地址,等会配置gitlab 钩子需要使用到
  • 勾选:Push Events
  • 勾选:Comments
  • 点击,高级
  • 勾选: Set build description to build cause (eg. Merge request or Git Push )
  • 配置,指定分支 ,我这里配置的是release 分支
  • 点击Generate 生成一个 Secret token, 记住这个Token地址,等会配置gitlab 钩子需要使用到
  • 保存,save

基于Gitlab钩子提交合并代码触发jenkins构建

基于Gitlab钩子提交合并代码触发jenkins构建

步骤三: Gitlab 配置项目集成钩子,并绑定 webhook

  • 代码仓库,设置,集成
  • URL,把刚刚jenkins 上的webhook URL 贴到这里
  • Secret Token,把刚刚jenkins 上的Secret token 贴到这里
  • 勾选,Push events
  • 勾选,Enable SSL verification
  • Add webhook

基于Gitlab钩子提交合并代码触发jenkins构建

基于Gitlab钩子提交合并代码触发jenkins构建

步骤四: 测试下wehhook

还在刚刚配置gitlab 的集成配置页面,找到webhook 列表,点击 下拉选项里的 Push events

基于Gitlab钩子提交合并代码触发jenkins构建

可以看到,jenkins 已经自动获取到webhook 的通知请求,并开始了构建

基于Gitlab钩子提交合并代码触发jenkins构建

步骤五: 配置流水线 【pipeline 项目类型】

上面演示的流水线是基于自由风格类型去配置的,其实很多时候我们的job都是pipeline 流水线类型,这个就需要手动的写pipeline

  • triggerOnPush ,开启Push Events 事件
  • triggerOnMergeRequest ,关闭MergeRequest ;是否 Merge Request 事件时触发,MR 包含创建、变更、接受等很多情况
  • ciSkip,关闭 ci,允许 CI 跳过
  • branchFilterType 和 includeBranchesSpec 是一个关联,branchFilterType 为 NameBasedFilter生效,监听哪些分支的事件,多分支使用英文逗号分开
pipeline{


//Gitlab-webhook
    triggers {
        gitlab(
            triggerOnPush: true,
            triggerOnMergeRequest: false,
            ciSkip: false,
            branchFilterType: "NameBasedFilter",
            includeBranchesSpec: "release",
            secretToken: "XXXXXXXXXX"
        )
    }

修改完成流水线,需要执行一下构建以更新触发器配置,也就是渲染出触发器的配置

最后:

  刚开始做的时候,根据网上提供的几篇文章去测试,都发现一个问题,当开发者提交合并代码的请求时,管理员还没同意merge,gitlab webhook 就去通知jenkins 执行构建任务,管理员同意merge 后,jenkins 却没有收到任务构建任务。

  后来发现 合并请求审批者同意合并时发起的是push请求,总以为是merge请求,所以只需要在 jenkins 的job 里 ,只勾选Push Events 【不能勾选Opened Merge Request Events,Accepted Merge Request Events】; gitlab 的webhook 设置里 只设置 推送 Push events

参考

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/6897

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年1月31日 下午4:36
下一篇 2023年2月2日 下午4:26

相关推荐

  • K8S集群搭建高可用prometheus+grafana

    使用k3s来搭建测试环境。 为什么使用k3s K3s 是一个轻量级的、完全兼容的 Kubernetes 发行版本。非常适合测试。 K3s将所有 Kubernetes 控制平面组件都封装在单个二进制文件和进程中,文件大小<100M,占用资源更小,且包含了kubernetes运行所需要的部分外部依赖和本地存储提供程序。 K3s提供了离线安装包,安装起来非常…

    2022年11月22日
    12700
  • CentOS7搭建LNMP环境教程

    一、安装nginx 创建 nginx.repo 文件 安装配置nginx 配置文件详解 启动并验证 二、安装MariaDB 安装mariadb 使用Mysql需先初始化密码 三、安装PHP 更新yum源 执行下面的命令安装所需的包 启动php-fpm 创建测试文件 访问服务器,如果出现如下界面表示安装完成! 这样Lnmp环境就快速搭建完成了!!!

    2022年11月15日
    19200
  • 服务器中挖矿木马病毒如何解决(kswapd0进程使cpu爆满)

    现象:系统cpu持续使用过高,造成无法远程连接 分析过程:一开始机器不能远程登录,但又能够ping通,登录信息也没有修改过,判断可能远程登录服务故障,后登录机器top发现,cpu使用率百分百,这很不正常,上面只运行了一个网站与数据库,发现异常进程kswapd0,查找资料后发现其是挖矿程序 解决方案:排查kswapd0进程 top 执行命令 netstat -…

    2022年12月13日
    28800
  • centos7查看cpu核心数

    总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 查看物理CPU个数 cat /proc/cpuinfo| grep “hysical id”| sort| uniq| wc -l 查看每个物理CPU中core的个数(即核数) cat /proc/cpuinfo| grep “cpu core”| uniq 查看逻辑CPU的个数 c…

    2023年1月10日
    8200
  • CentOS 修改 SSH无操作自动断开时长及连接超时

    CentOS 修改 SSH无操作自动断开时长 当 SSH 连接到 CentOS 服务器时, 如果一段时间不操作, SSH 会自动断开。 这时, 可修改配置增加连接时长。 一、修改配置 在配置中找到 修改为 ClientAliveInterval 指定了服务器端向客户端发送消息的间隔,默认 0 不发送消息。ClientAliveInterval 30…

    2023年2月20日
    6100

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信