我做了什么:
我设法将状态为每个内部版本的通知发送到my专用Slack频道。因此,我配置了Jenkins以及Slack应用程序。
我想做什么:
将消息发送到其他用户私人频道。
我尝试过的事情:
我将通道添加到我的Jenkinsfile中,并在Jenkins的Slack App中对其进行了检查,但未成功。我想我必须像Bot那样创建某事,它在我想向其发送消息的特定渠道中。非常确定,詹金斯(Jenkins)无法看到该频道,因为该频道是另一个人的私人频道(显然),并且无法找到它。找不到针对此问题的解决方案。
非常感谢您的帮助,我想我浪费了很多时间试图找到答案。
我设置了构建管道,以将Slack通知发送给提交者。最大的挑战是映射到Slack用户名。我让团队中的每个开发人员都更改了他们的git user.name以匹配他们的Slack Display名称。这是我知道的最简单的方法。
git config --global user.name "Mona Lisa"
,其中“ Mona Lisa”是用户的Slack显示名称。在Jenkins管道中,我使用env.GIT_COMMIT_AUTHOR
来返回此值。
请注意,环境变量在HEAD处为提交的所有内容提供提交作者。对于多分支管道中的请求请求,如果PR是not快进,则提交将是合并所产生的结果,从而产生“ 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报告该频道不存在。