[英]Send Slack notification from Jenkins into private channel of other users
我做了什么:
我设法将带有每个构建状态的通知发送到我的私人 Slack 频道。 所以我配置了我的 Jenkins 以及我的 Slack 应用程序。
我想做的事:
向其他用户的私人频道发送消息。
我尝试过的:
我将频道添加到我的 Jenkinsfile 并在 Jenkins 的 Slack 应用程序中检查它们,但没有成功。 我想我必须像机器人一样创建某个东西,它位于我想向其发送消息的特定频道中。 很确定詹金斯看不到频道,因为它是另一个人的私人频道(显然)并且无法找到它。 找不到此问题的解决方案。
非常感谢您的帮助,我想我浪费了很多时间试图找到答案。
我设置了我们的构建管道以向提交作者发送 Slack 通知。 最大的挑战是映射到 Slack 用户名。 我让团队中的每个开发人员更改他们的 git user.name 以匹配他们的 Slack 显示名称。 这是我所知道的最直接的方式来完成这项工作。
git config --global user.name "Mona Lisa"
其中 "Mona Lisa" 是用户的 Slack 显示名称。 在 Jenkins 管道中,我使用env.GIT_COMMIT_AUTHOR
来取回这个值。
请注意,环境变量在签出的任何内容的 HEAD 处提供提交作者。 对于多分支管道中的拉取请求,如果 PR不是快进,则合并会产生提交,从而产生“Jenkins”的作者。 所以,在这种情况下,你需要来自 HEAD~1 的作者
根据我的经验,将 Slack 消息发送到私人频道需要 OAuth。 当 Jenkins 作为机器人添加到 Slack 并被邀请到频道时,我才成功通过slackSend()
发送到私人频道。
这是一个有效的示例管道:
#!/usr/bin/env groovy
pipeline {
agent {
node {
label "master"
}
}
stages {
stage('Send Notification') {
steps {
script {
def color = "${params.MESSAGE_STATUS}" == "GOOD"? "good" : "warning"
slackSend(color: "${color}", message: "${params.MESSAGE}", channel: "${params.CHANNEL}")
}
}
}
}
parameters {
string(name: 'MESSAGE', defaultValue: 'Hello')
string(name: 'CHANNEL', defaultValue: '#test_private')
choice(name: 'MESSAGE_STATUS', choices: ['GOOD', 'WARNING'], description: '')
}
}
通过机器人等发送没有成功,因为 Slack 报告该频道不存在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.