Jenkins 中实现「当 Git 分支代码变更后自动触发构建」

在 Jenkins 中实现「当 Git 分支代码变更后自动触发构建」,可以通过 Webhook 触发轮询 SCM 的方式实现。以下是详细配置步骤:


方法 1:通过 Webhook 自动触发(推荐)

步骤 1:在 Git 仓库配置 Webhook
  1. GitHub/GitLab 等平台
    • 进入仓库的 Settings → Webhooks
    • 添加 Webhook 地址:http://:/github-webhook/(GitHub)或 http://:/project/(通用)。
    触发事件:选择 Push events(代码推送时触发)。
    Secret 令牌(可选):如果需要验证,生成一个 Token 并在 Jenkins 中配置。

  2. 自建 Git 服务(如 Gitea)
    • Webhook 地址格式一般为 http://:/generic-webhook-trigger/invoke


步骤 2:在 Jenkins 任务中配置 Git 分支与触发
  1. 创建任务
    • 新建一个 Freestyle projectPipeline 任务。

  2. 配置 Git 仓库
    • 在 源码管理 中选择 Git
    • 填写仓库 URL(如 https://github.com/user/repo.git)。
    • 指定分支:在 Branches to build 中填写 */main*/dev 或通配符(如 */feature-*)。

  3. 设置 Webhook 触发
    • 在 构建触发器 中选择:
    GitHub hook trigger for GITScm polling(GitHub 仓库)。
    Generic Webhook Trigger(通用仓库,需安装插件)。

  4. 配置凭据(如果需要认证)
    • 添加 Git 仓库的访问凭据(用户名/密码或 SSH 密钥)。


方法 2:通过轮询 SCM(定期检查变更)

  1. 在 Jenkins 任务中启用轮询
    • 在 构建触发器 中选择 Poll SCM
    • 设置轮询时间间隔,例如 H/5 * * * *(每 5 分钟检查一次)。

  2. 配置 Git 分支(同方法 1)。


完整示例(以 GitHub + Webhook 为例)

1. Jenkins 任务配置
- 任务类型: Freestyle project
- 源码管理: Git
  - Repository URL: https://github.com/your-username/your-repo.git
  - 分支: */main
- 构建触发器:
  - ✅ GitHub hook trigger for GITScm polling
- 构建步骤:
  - 添加 Shell 或 Pipeline 脚本(如 `mvn clean install`)
2. GitHub Webhook 配置
- URL: http://-IP>:8080/github-webhook/
- Content type: application/json
- 事件: Just the push event

验证配置

  1. 手动推送代码到分支
    git commit -m "Trigger Jenkins build test" && git push origin main
    
  2. 查看 Jenkins 任务
    • 任务应自动触发并显示在构建队列中。

常见问题排查

  1. Webhook 未触发
    • 检查 Jenkins 地址是否可从公网访问(或与 Git 服务器网络连通)。
    • 查看 GitHub/GitLab 的 Webhook 响应日志(通常显示 200403 错误)。
    • 确保 Jenkins 安装了相关插件(如 GitHub Plugin)。

  2. 轮询 SCM 不生效
    • 检查轮询语法是否正确(Cron 格式)。
    • 查看 Jenkins 日志:Manage Jenkins → System Log

  3. 权限问题
    • 确保 Jenkins 凭据配置正确(如 Git 仓库的读写权限)。


高级配置(多分支 Pipeline)

如果需要监控多个分支(如所有 feature-* 分支),可以使用 Jenkins PipelineMultibranch Pipeline

  1. 安装插件GitHub Branch Source Plugin
  2. 创建 Multibranch Pipeline
    • 指定 Git 仓库。
    • 配置分支过滤规则(如 main, dev, feature/*)。
  3. 自动发现分支:Jenkins 会为每个匹配的分支创建子任务。

通过上述配置,即可实现 Git 分支代码变更后的自动构建!

你可能感兴趣的:(jenkins,git,运维)