Jenkins集成Slack告警需用Slack Notification插件+Bot Token(推荐),配置凭证、频道及post段触发逻辑,支持富文本、上下文信息与降噪策略。

Jenkins 集成 Slack 实现自动化告警,核心是通过 Slack Notification 插件 + Slack Bot Token 或 Webhook URL 建立通信链路,再结合构建结果触发通知。整个过程不依赖外部脚本,原生支持 Pipeline 和传统任务,配置清晰、稳定性高。
获取 Slack 凭据(Bot Token 方式更推荐)
Slack 官方已逐步限制 Incoming Webhook 的功能,建议使用 Bot 用户方式,权限可控、消息样式丰富:
- 访问 api.slack.com/apps → 创建新应用 → 选择你的 Workspace
- 在 “Features > Bot User” 中启用 Bot,并设置显示名称(如
Jenkins-Bot) - 进入 “OAuth & Permissions”,勾选必要权限:
chat:write、channels:read、groups:read、users:read.email - 点击 “Install to Workspace”,复制生成的 Bot User OAuth Token(以
xoxb-开头) - 将 Jenkins-Bot 手动邀请进目标频道(如
#ci-alerts),否则无法发消息
Jenkins 端安装与全局配置
插件安装后需正确绑定凭证,这是连接成功的关键:
- 进入 Manage Jenkins → Manage Plugins,搜索并安装
Slack Notification插件(注意不是旧版 “Slack Plugin”) - 重启 Jenkins(部分版本需重启才加载插件)
- 进入 Manage Jenkins → Configure System,找到 Slack 配置区
- 点击 Add credentials → Secret text,ID 填
slack-bot-token,Secret 粘贴刚才复制的 Bot Token - 在 Slack 配置中:
• Credential:选择刚创建的slack-bot-token
• Default channel:填#ci-alerts(必须带 #)
• Test Connection:点击测试,成功会收到一条 “Jenkins is ready!” 消息
按需配置告警触发逻辑
告警不是“所有失败都报”,而是要有策略地减少噪音:
- 自由风格项目:在任务配置 → “构建后操作” → 勾选 “Slack Notifications”,可单独设置 success / failure / unstable / not built 的开关
-
Pipeline 项目(推荐):在
Jenkinsfile的post段中定义,例如:
post {
failure {
slackSend(
channel: '#ci-alerts',
message: "❌ 构建失败 | ${env.JOB_NAME} #${env.BUILD_NUMBER} | ${env.GIT_COMMIT.take(7)}",
attachments: [[color: 'danger', title: '查看控制台', title_link: "${env.RUN_DISPLAY_URL}console"]]
)
}
fixed {
slackSend(channel: '#ci-alerts', message: "✅ 已修复 | ${env.JOB_NAME} 恢复正常")
}
}
- 关键技巧:
• 使用fixed和unstable等状态,比单纯failure更精准
•attachments支持富文本,可加链接、颜色块、字段列表,提升可读性
• 避免在always中发重复消息,除非用于归档或审计
增强告警实用性的小细节
让告警真正有用,不只是“挂了”,还要帮人快速定位问题:
- 在消息中加入关键上下文:Git 分支、提交人邮箱(用
slackUserIdFromEmailStep可 @ 相关人)、构建耗时、失败阶段名 - 对高频失败任务,启用插件内置的 “Only notify on regression”(仅首次失败通知),避免刷屏
- 配合
email-ext或钉钉作为备用通道,Slack 不可用时不阻断告警流程 - 敏感环境(如生产发布)可额外添加人工确认步骤,并在 Slack 中发起投票或审批按钮(需配合
input步骤)


















