【问题标题】:Notify slack user from Jenkins pipeline when build fails构建失败时从 Jenkins 管道通知 slack 用户
【发布时间】:2020-06-01 06:53:09
【问题描述】:

我正在从 Jenkins 管道向通道发送 slack 通知,我已经安装了 Jenkins slack 插件https://plugins.jenkins.io/slack 并配置了 Jenkins slack 应用程序以在构建失败或成功时向通道发送通知。我不想只向松弛通道发送失败消息,而是通知用户说构建失败。 例如:@user error in deploying following project

我从 jenkins slack 插件中提到了这个步骤

def userIds = slackUserIdsFromCommitters()
def userIdsString = userIds.collect { "<@$it>" }.join(' ')
post {
        // Send the build result to slack channel
        success {
          slackSend (color:'good', message: "<@$userIds>Successfully deployed")
        }
        failure {
            slackSend (color:'danger', message: "<@$userIds>Error in build ${env.JOB_NAME}")
        }
    }

我得到 $userIds 变量的空值。

【问题讨论】:

    标签: jenkins groovy


    【解决方案1】:

    如果它仍然与某人相关,我这样做了:

    ........
        }
        post {
            always {
                script {
                    env.GIT_COMMIT_MSG = sh (script: 'git log -1 --pretty=%B ${GIT_COMMIT} | head -n1', returnStdout: true).stripIndent().trim()
                    env.GIT_AUTHOR = sh (script: 'git log -1 --pretty=%ae ${GIT_COMMIT} | awk -F "@" \'{print $1}\' | grep -Po "[a-z]{1,}" | head -n1', returnStdout: true).trim()
                    slackSend(
                        color: color_slack_msg(),
                        message: """
                            *${currentBuild.currentResult}:* Job `${env.JOB_NAME}` build `${env.BUILD_DISPLAY_NAME}` by <@${env.GIT_AUTHOR}>
                            Build commit: ${GIT_COMMIT}
                            Last commit message: '${env.GIT_COMMIT_MSG}'
                            More info at: ${env.BUILD_URL}
                            Time: ${currentBuild.durationString.minus(' and counting')}
                            """.stripIndent().trim(),
                        channel: 'slack-channel',
                        tokenCredentialId: 'SlackToken'
                    )
                }
                cleanWs()
            }
        }
    }
    
    def color_slack_msg() {
        switch(currentBuild.currentResult) {
        case "SUCCESS":
            return "good"
            break
        case "FAILURE":
        case "UNSTABLE":
            return "danger"
            break
        default:
            return "warning"
            break
        }
    }
    
    

    如果mail = login in slack,这将起作用

    【讨论】:

      【解决方案2】:

      此功能仅适用于 slack 机器人用户,不适用于 Jenkins 机器人应用程序。 您创建的机器人用户应该有权读取和写入频道的消息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-23
        • 1970-01-01
        • 2015-12-07
        • 2020-07-21
        • 1970-01-01
        • 1970-01-01
        • 2017-05-22
        相关资源
        最近更新 更多