将Jenkins的Slack通知发送到其他用户的私人频道中

问题描述 投票:0回答:2

我做了什么:

我设法将状态为每个内部版本的通知发送到my专用Slack频道。因此,我配置了Jenkins以及Slack应用程序。

我想做什么:

将消息发送到其他用户私人频道。

我尝试过的事情:

我将通道添加到我的Jenkinsfile中,并在Jenkins的Slack App中对其进行了检查,但未成功。我想我必须像Bot那样创建某事,它在我想向其发送消息的特定渠道中。非常确定,詹金斯(Jenkins)无法看到该频道,因为该频道是另一个人的私人频道(显然),并且无法找到它。找不到针对此问题的解决方案。

非常感谢您的帮助,我想我浪费了很多时间试图找到答案。

jenkins groovy devops slack
2个回答
0
投票

我设置了构建管道,以将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

中的作者

0
投票

根据我的经验,将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报告该频道不存在。

© www.soinside.com 2019 - 2024. All rights reserved.