所需插件
在 Jenkins 中安装 Generic Webhook Trigger 插件
Jenkinsfile 配置
在 GitLab 中创建一个用于集成的演示项目
并在该项目根路径创建一个 Jenkinsfile 文件, 文件内容如下
1 | pipeline { |
Jenkins 配置
在 Jenkins 创建一个 Multibranch Pipeline 项目
配置分支源为 Git, 项目仓库为 GitLab 中的项目地址
同时配置不通过SCM自动化触发, 该配置是指保存后不要直接运行 Job
然后进行保存
Webhook 配置
进入项目 Webhook 配置页面
URL 地址格式为 {jenkins 地址}/generic-webhook-trigger/invoke?token={token}
如果 jenkins 地址为内网, 需要在 GitLab 管理配置页面的 Outbound requests 下勾选 Allow requests to the local network from web hooks and services 属性, 否则会保存失败
Generic Webhook Trigger 插件可以通过配置 IP 白名单的方式仅接受允许的 IP
参考链接: https://github.com/jenkinsci/generic-webhook-trigger-plugin#whitelist-hosts
然后点击最下方的保存按钮即可
保存后在 webhooks 页面最下面可以看到该记录, 点击 Test 按钮, 然后选择 Push events, 此时会手动触发一次 webhook 请求, 如果响应成功, 会显示一条 Hook executed successfully: HTTP 200 的消息提示
同时在 Jenkins 的 Blue 页面查看项目活动记录, 可以看到项目运行成功的记录, 其中的消息部分为即为 causeString 属性
手动运行
除了通过 Webhook 运行的方式外, 我们可能存在手动运行的需求
如果我们在 Jenkinsfile 中没有依赖 genericVariables 配置的环境变量的话, 我们可以直接手动运行, 否则的话使用该变量会出现问题
这个时候需要定义一个与 genericVariables 中 key 名称相同的 parameter
配置方式如下
1 | pipeline { |
如果是通过 webhook 运行, Generic Webhook Trigger 会使用 genericVariables 中的 WEBHOOK_REF 填充 parameter 中的 WEBHOOK_REF
如果是手动运行, Generic Webhook Trigger 会使用 parameter 中的 WEBHOOK_REF 填充 genericVariables 中的 WEBHOOK_REF
GenericTrigger 自定义配置
GenericTrigger 的属性说明可以查看 插件官方文档
同时可以在项目配置页面点击流水线语法, 然后使用可视化语法生成器生成 trigger 配置
填写配置属性后点击 Generate Declarative Directive 按钮即可生成