通过 Jenkins 钉钉插件配置通知,需在 Jenkins 系统设置中绑定钉钉机器人 Webhook,并在流水线脚本中调用dingtalk步骤。适用场景为构建状态同步,风险边界在于网络连通性与签名密钥匹配。
先说结论:该方案适合 CI/CD 流程中的构建状态实时同步,配置前需准备钉钉群机器人 Webhook 与签名密钥,验收以钉钉群收到消息为准。
- 适合:Jenkins 构建成功、失败或不稳定状态的通知
- 先准备:钉钉群自定义机器人 Webhook 地址及安全设置(签名或关键词)
- 验收:Jenkins 配置页测试连接成功且钉钉群收到测试消息
命令速用版
在 Jenkinsfile 的 post 阶段调用插件提供的步骤,以下片段可直接嵌入流水线:
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building..'
}
}
}
post {
always {
dingtalk robot: 'myRobot', type: 'TEXT', text: "构建状态:${currentBuild.currentResult}"
}
}
}
为什么会这样
钉钉通知依赖 HTTP 回调机制,Jenkins 作为客户端向钉钉开放平台接口发送请求。
插件封装了钉钉机器人的 API 协议,包括签名算法和消息格式。配置本质是将 Jenkins 系统凭证与钉钉机器人身份绑定,流水线调用时插件自动完成签名和发送,无需在脚本中硬编码密钥。
分步处理
按顺序完成机器人创建、插件安装、系统配置和脚本编写,每步需确认无误后再继续。
1. 创建钉钉机器人:在钉钉群设置中添加自定义机器人,安全设置建议选择“签名(Secret)”,记录 Webhook 地址和 Secret。
2. 安装插件:进入 Jenkins 系统管理 -> 插件管理,搜索“DingTalk”,安装并重启(如需)。
3. 配置系统通知:进入系统管理 -> 系统配置,找到 DingTalk 设置,添加机器人,填入 Webhook 和 Secret,点击“测试”按钮。
4. 编写流水线:在 Jenkinsfile 中使用dingtalk步骤,指定机器人名称和消息内容。
怎么验证是否生效
验证分为配置态验证和运行态验证,两者均成功才算配置完成。
配置态:在 Jenkins 系统配置页点击“测试”,页面提示成功且钉钉群收到测试消息。
运行态:触发一次构建,观察控制台输出是否有发送日志,同时检查钉钉群是否收到构建结果消息。
常见坑
配置失败多由网络限制或密钥不匹配导致,需重点检查以下环节。
- 签名不匹配:Jenkins 配置的 Secret 必须与钉钉机器人设置的 Secret 完全一致,多余空格会导致失败。
- 网络不通:Jenkins 服务器需能访问
oapi.dingtalk.com,内网环境可能需要配置 HTTP 代理。 - 插件兼容性:部分旧版插件已停止维护,建议选用社区活跃度高的 DingTalk 插件版本。
常见问题
如何只接收失败通知?
在流水线 post 块中使用when: failure条件控制发送步骤。
支持发送 Markdown 消息吗?
支持,将type参数设为MARKDOWN并按格式编写文本内容。
配置后收不到消息怎么办?
先检查 Jenkins 系统日志是否有 HTTP 报错,再确认钉钉机器人是否被禁用或移除。
参考来源
- Jenkins 插件官网:DingTalk Plugin https://plugins.jenkins.io/dingtalk/
- 钉钉开放平台:自定义机器人接入 https://open.dingtalk.com/document/robots/custom-robot-access