【发布时间】:2021-12-27 21:41:03
【问题描述】:
根据主要Jenkins-Slack documentation,您必须将 Jenkins 应用程序配置为 slack,并在那里指定插件可以发布的单个频道。现在就我而言,我需要从 Jenkins 服务器发布到多个频道和用户,管理多个身份验证令牌非常麻烦。有没有办法让一个令牌适用于所有渠道和用户?还有其他方法吗?我看到 Jenkins 插件有一个 bot 复选框,但几乎没有关于如何使其工作的文档。
【问题讨论】:
根据主要Jenkins-Slack documentation,您必须将 Jenkins 应用程序配置为 slack,并在那里指定插件可以发布的单个频道。现在就我而言,我需要从 Jenkins 服务器发布到多个频道和用户,管理多个身份验证令牌非常麻烦。有没有办法让一个令牌适用于所有渠道和用户?还有其他方法吗?我看到 Jenkins 插件有一个 bot 复选框,但几乎没有关于如何使其工作的文档。
【问题讨论】:
你可以加channel: '#CHANNEL_NAME:
更多信息:https://jenkins.io/doc/pipeline/steps/slack/
post {
success {
slackSend (channel: '#ch1', color: '#00FF00', message: "SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
failure {
slackSend (channel: '#ch1', color: '#FF0000', message: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
}
【讨论】:
我刚刚为我的项目渠道实施了解决方案。
Post build actions -> Slack notification of a Job 中有一个 Advanced 按钮可用。
您可以提供基本 URL 和令牌以及要将通知发送到的频道名称。
【讨论】:
如果一个人对其组织的 Slack 帐户拥有足够的权限,则可以在 https://api.slack.com/apps?new_app=1 创建一个充当机器人的应用程序。
一旦此机器人安装到工作区 [https://api.slack.com/apps/<org-id>/install-on-team?] 并被授予发布到目标频道的权限
(只需在频道中发送消息/invite @<bot-name>,它将有权发布到该频道]。但不确定如何为用户执行此操作。
除此之外,slackSend 支持一次发送到多个频道。
多个频道可以以逗号、分号或空格分隔的字符串形式提供。
https://jenkins.io/doc/pipeline/steps/slack/
例如,以下任何一项都有效:
channel: "#ch-1,#ch-2,#ch-3"
(OR)
channel: "#ch-1;#ch-2;#ch-3"
(OR)
channel: "#ch-1 #ch-2 #ch-3"
完整的命令可能是:
slackSend (channel: '#ch1 #ch2 #ch3', color: '#00FF00', message: "SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
【讨论】: