如何在 Jenkins 流水线中配置钉钉机器人构建通知插件?

文章导读
在 Jenkins 流水线中配置钉钉通知,最稳妥的方式是安装官方 DingTalk 插件,配合钉钉群自定义机器人 Webhook 完成对接,适用于需要实时感知构建状态的研发团队。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 参考来源
A A

在 Jenkins 流水线中配置钉钉通知,最稳妥的方式是安装官方 DingTalk 插件,配合钉钉群自定义机器人 Webhook 完成对接,适用于需要实时感知构建状态的研发团队。

先说结论:通过 Jenkins 插件管理安装 DingTalk 插件,在钉钉群创建机器人获取 Webhook 和密钥,并在 Jenkins 全局配置中绑定,最后在 Pipeline 脚本中调用发送接口。

  • 适合:需要构建结果实时推送到群聊、支持富文本消息的场景
  • 先准备:钉钉群管理员权限、Jenkins 管理员权限、服务器能访问钉钉 API 域名
  • 验收:触发构建后群内收到消息,且 Jenkins 控制台无插件报错

命令速用版

pipeline {
    agent any
    stages {
        stage('Notify') {
            steps {
                script {
                    dingtalk robot: 'default', type: 'TEXT', text: "构建状态:${currentBuild.currentResult}"
                }
            }
        }
    }
    post {
        always {
            dingtalk robot: 'default', type: 'MARKDOWN', title: '构建通知', text: "## ${env.JOB_NAME}\n- 状态:${currentBuild.currentResult}\n- 链接:${env.BUILD_URL}"
        }
    }
}

为什么会这样

Jenkins 本身不具备直接调用钉钉接口的能力,需要借助插件封装 HTTP 请求。钉钉群机器人本质是一个 Webhook 地址,接收符合特定格式的 JSON 数据后转发到群聊。插件的作用就是简化这个发送过程,让你不用在脚本里写 curl 命令。

如何在 Jenkins 流水线中配置钉钉机器人构建通知插件?

分步处理

1. 安装插件
进入 Jenkins 系统管理 -> 插件管理,搜索"DingTalk",安装由 Jenkins 社区维护的插件(通常名为 DingTalk)。安装后需重启 Jenkins。

2. 配置钉钉机器人
在钉钉群设置中找到“群机器人”,添加自定义机器人。勾选“加签”安全设置,复制 Webhook 地址和_secret 密钥。公开资料中没有看到可靠的量化数据表明哪种安全设置更好,但“加签”比 IP 白名单更适合动态 IP 的 Jenkins 服务器。

如何在 Jenkins 流水线中配置钉钉机器人构建通知插件?

3. 配置 Jenkins 全局设置
进入系统管理 -> 系统配置,找到 DingTalk 设置区域。添加机器人配置,名称需与流水线脚本中引用的名称一致(如'default'),填入 Webhook 和密钥。

4. 编写流水线
在 Jenkinsfile 的 post 阶段或特定 stage 中,使用 dingtalk 步骤发送消息。注意变量引用需要使用${env.VARIABLE}或${currentBuild.VARIABLE}。

如何在 Jenkins 流水线中配置钉钉机器人构建通知插件?

怎么验证是否生效

保存流水线配置后点击“立即构建”。观察两点:一是 Jenkins 构建控制台输出中是否有插件发送成功的日志;二是钉钉群内是否在规定时间内收到消息。如果构建成功但没收到消息,优先检查 Jenkins 系统日志。

常见坑

1. 密钥不匹配:钉钉机器人开启了加签,但 Jenkins 配置里没填密钥,会导致签名验证失败,消息发不出去。
2. 网络不通:Jenkins 服务器所在网络无法访问 oapi.dingtalk.com,需检查防火墙或 DNS 配置。
3. 名称不一致:全局配置里的机器人名称与脚本里 robot 参数不一致,插件会找不到配置。
4. 内容长度限制:钉钉消息内容有长度限制,过长的构建日志直接发送会被拦截,建议只发送摘要。

参考来源

  • Jenkins Plugins, "DingTalk", https://plugins.jenkins.io/dingtalk/
  • 钉钉开放平台,"自定义机器人接入", https://open.dingtalk.com/document/robots/custom-robot-access