「Jenkins」- Webhook (Gitlab、Gitee)

  CREATED BY JENKINSBOT

问题描述

通过 Webhook 能够自动触发 Jenkins 构建。例如:
1)用户向 Gitlab(Gitee)提交代码,然后 Gitlab 会调用 Jenkins URL 来触发构建动作。

该笔记将记录:Webhook 相关内容,比如 自动触发构建、口令设置问题 等等,以及常见问题的解决方案。

解决方案

Secret Token

在Gitlab中配置Webhook时,需要设置口令。之后,在Gitlab通知Jenkins时,要传入口令以对身份认证。

麻烦的地方是有时候需要配置口令,有时候不需要配置口令。本文将整理何时需要配置口令,何时无需配置口令。

GitLab

Gitlab + Jenkins Multibranch Pipeline => 无需在Gitlab中配置口令
Gitlab + Jenkins Freestyle project => 需要在Gitlab中正确配置口令

# 03/19/2022 Gitlab Hook 由于依赖 ruby-runtime 插件,而 ruby-runtime 无法支持更高 JDK 版本而被废弃。
Deprecating non-Java plugins

Gitee

Gitee + Jenkins Freestyle project => 需要在Gitee中正确配置口令
Gitlab + Jenkins Multibranch Pipeline => 无需在Gitlab中配置口令

Gogs

Gogs | Jenkins plugin

Gogs 是 Gitlab 的替代品,轻量级的 Git 仓库服务。Gogs 同样支持 Webhook 功能(即在仓库发生变更时,通知 Jenkins 构建)。

1)在 Jenkins 中,安装 Gogs 插件;
2)在 Jenkins 中,配置 Gogs Webhook / Use Gogs secret 密钥;
3)在 Gogs 中,添加 Webhook 配置,地址 http(s)://<jenkins-server>/gogs-webhook/?job=<jobname> 格式,并指定密钥即可;
4)在 Gogs 中,点击 Test Delivery 测试;