「Jenkins Pipeline」- 发送 Slack 通知

  CREATE BY JENKINSBOT

问题描述

在 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