avatar

Ryan's Blog

The first step is always the hardest.

  • 首页
  • 分类
  • 标签
  • 归档
  • 关于
  • 工具
Home GitLab Webhook 触发 Jenkins Pipeline:Push、Tag 与 Merge Request 自动构建
文章

GitLab Webhook 触发 Jenkins Pipeline:Push、Tag 与 Merge Request 自动构建

Posted 2022-01-12 Updated 9 days ago
By Ryan Chen
10~14 min read

GitLab Webhook 可以在代码 Push、创建 Tag、提交 Merge Request 时主动通知 Jenkins,从而触发自动构建、测试、扫描和部署。

这篇文章整理 GitLab Webhook 触发 Jenkins Pipeline 的配置方法,并补充 Secret Token、安全配置和常见问题排查。

CI/CD 系列文章

本文属于 Jenkins + GitLab + SonarQube CI/CD 系列,相关内容可以继续阅读:

  • Git 提交规范实践:Conventional Commits、Commitizen 与 CHANGELOG 自动生成
  • GitLab Docker 部署与 Personal Access Token 配置指南
  • Jenkins 安装部署与 JDK、Maven、Agent 构建环境配置
  • GitLab Webhook 触发 Jenkins Pipeline:Push、Tag 与 Merge Request 自动构建
  • Jenkins 基于 GitLab 分支与 Tag 的自动化打包发布实践
  • Jenkins 集成 SonarQube:代码扫描、质量门禁与 Pipeline 实践
  • SonarQube Docker 部署与 Java 项目静态代码分析指南
  • SonarQube for IDE 使用指南:IntelliJ 安装、Connected Mode 与规则同步
  • SonarQube LTA 升级与数据库迁移指南:从旧版本到 8.9/9.9/2025 LTA

前提条件

需要准备:

  • Jenkins 已安装 GitLab 插件或使用 Generic Webhook Trigger。
  • Jenkins Job 或 Multibranch Pipeline 已创建。
  • Jenkins 能访问 GitLab 仓库。
  • GitLab 能访问 Jenkins Webhook URL。

Jenkins 侧配置

推荐使用 Pipeline,而不是只依赖 Freestyle。

Jenkinsfile 示例:

pipeline {
  agent any
  stages {
    stage('Checkout') {
      steps { checkout scm }
    }
    stage('Build') {
      steps { sh 'mvn -B clean package -DskipTests' }
    }
  }
}

如果使用 GitLab 插件,在 Job 配置中启用:

Build when a change is pushed to GitLab

记录生成的 Webhook URL。

GitLab 侧配置 Webhook

路径:

Project -> Settings -> Webhooks

配置:

  • URL:Jenkins 提供的触发地址。
  • Secret Token:建议填写随机字符串。
  • Trigger:按需选择 Push events、Tag push events、Merge request events。
  • SSL verification:生产环境建议开启。

配置完成后点击 Test。

触发事件选择

事件 适用场景
Push events 分支提交自动构建
Tag push events 发布版本自动打包
Merge request events 合并前测试和扫描
Pipeline events 与 GitLab CI 联动

建议:

  • 开发分支 Push 执行快速验证。
  • Merge Request 执行测试和质量门禁。
  • Tag 执行正式打包和发布。

Secret Token 安全

不要为了方便直接取消鉴权。更推荐:

  • GitLab Webhook 配置 Secret Token。
  • Jenkins 插件校验 Token。
  • Jenkins URL 不暴露公网,或前置网关鉴权。
  • 对触发日志做审计。

常见问题

1. Url is blocked: Requests to the local network are not allowed

GitLab 默认可能禁止 Webhook 请求本地网络地址。

解决:

Admin Area -> Settings -> Network -> Outbound requests

允许访问本地网络或配置白名单。生产环境应只放行 Jenkins 地址。

2. Webhook 返回 403

常见原因:

  • Jenkins 权限不足。
  • Secret Token 不匹配。
  • Job 未启用 GitLab 触发。
  • 匿名用户没有 Build 权限。

不建议简单取消鉴权。应优先确认插件配置、Token 和 Jenkins 权限策略。

3. Webhook 成功但 Jenkins 没构建

检查:

  • Job 的触发器是否启用。
  • 分支过滤规则是否匹配。
  • Jenkins 系统日志。
  • GitLab Webhook 最近投递记录。

参考资料

  • GitLab Webhooks
  • Jenkins GitLab Plugin
  • Jenkins Pipeline
指南
GitLab Jenkins GitLab Webhook Pipeline 持续集成 安全配置
License:  CC BY 4.0
Share

Further Reading

Jun 27, 2026

Agent 架构设计原则:Router、Runtime 与 Business Script 的职责划分

本文整理一套适合 Router Agent + Skill + Runtime 架构的设计原则:Agent 只负责业务决策,Runtime 统一负责执行、恢复、Trace、Checkpoint 和 Evidence,Business Script 只做确定性业务执行。

Sep 9, 2024

Redis 核心概念、数据结构与高可用架构详解

系统梳理 Redis 的核心数据类型、底层结构、过期与淘汰、持久化、事务、主从复制、Sentinel、Cluster、缓存一致性和分布式锁等机制,适合作为 Redis 学习、面试复习和高可用架构设计参考。

Sep 5, 2024

B+树原理与 MySQL InnoDB 索引机制解析

本文从 B+ 树的多叉平衡结构、叶子节点链表、范围查询和磁盘 I/O 特性出发,解释数据库索引为什么常采用 B+ 树,并结合 MySQL InnoDB 的聚簇索引、二级索引、回表、覆盖索引和联合索引机制理解其实际应用。

OLDER

Jenkins 基于 GitLab 分支与 Tag 的自动化打包发布实践

NEWER

SonarQube for IDE 使用指南:IntelliJ 安装、Connected Mode 与规则同步

Recently Updated

  • Agent 架构设计原则:Router、Runtime 与 Business Script 的职责划分
  • RocketMQ 架构设计与应用最佳实践:高可用消息队列核心解析
  • Redis 核心概念、数据结构与高可用架构详解
  • B+树原理与 MySQL InnoDB 索引机制解析
  • MySQL AUTO_INCREMENT 插入 0 变成自增值的原因与解决方案

Trending Tags

RocketMQ Windows Feign Docker Zipkin SonarQube OkHttp HttpClient API 性能优化

Contents

©2026 Ryan's Blog. Some rights reserved. · 粤ICP备2022031588号