问题描述
在 Jenkins Pipeline 中,当构建完成后,我们希望发送消息到 Slack Channel 进行消息通知,以告知我们构建的结果。
该笔记将记录:在 Jenkins Pipeline 中,如何使用 Slack 发送构建通知。
解决方案
第一步、准备工作
在 Slack 中,创建应用,参考 Slack/Notification Bot 笔记。
访问 https://api.slack.com/apps 页面,查看已经创建的应用。点击 <应用名称> 进入,以进行设置。
第二步、安装 Slack Notification 插件
在 Manage Jenkins / Manae Plugins / Available 中,搜索 Slack Notification 以查找 Slack Notification 扩展。
第三步、配置 Slack Notification 插件
在 Manage Jenkins / Configure System / Slack 中,填写相关信息:
1)Workspace:在创建 Slack 帐号时,使用的工作空间名称。在 https://k4nz.slack.com/admin/name 中查看,其实域名中的 k4nz 便是我们 Workspace 名称;
2)Credential:凭证信息。<Your App> / Oauth & Permissions / Bot User OAuth Token(为 xoxb-<xxxx> 格式)
3)Default channel:默认 Channel 名称。注意,如果需要该应用向 Channel 中发送消息,需要将该应用邀请到 Channel 中(比如通过 @ 方式邀请)
4)Custom slack app bot user:必须勾选,否则 Test Connection 失败。因为我们属于自定义 App,而没有使用 Slack 提供的 Jenkins CI 应用,因此需要勾选(参考 slack-plugin/README.md 说明)。
5)点击 Test Connection 测试。如果成功,则在默认 Channle 会收到一条消息,否则显示 Failure 信息;
第四步、在 Pipeline 中,向 Channel 发送消息
pipeline { agent any stages { stage('Building') { steps { slackSend channel: "#general", color: "good", message: "Message from Jenkins Pipeline" } } } }
关于 slackSend 步骤,参考 Slack Notification Plugin 文档。
补充说明
对于常规 Job(非 Jenkins Pipeline 类型),参考 https://my.slack.com/services/new/jenkins-ci 文档。
如果希望所有的 Job 都发送 Slack 通知,使用 Global Slack Notifier plugin 扩展。
发送其他格式的消息
如果希望,发送更多种类的消息、定制消息格式,参考如下文档:
1)简单的使用示例,参考 slack-plugin/README.md 说明;
2)Messaging for Slack apps | Slack
参考文献
Slack Notification | Jenkins plugin
Response: null, Response Code: 404 and Response: {“ok”:false,”error”:”invalid_auth”} · Issue #649 · jenkinsci/slack-plugin
Jenkins Slack Integration | Baeldung
Send slack command message (/giphy) · Issue #282 · jenkinsci/slack-plugin