jenkins - 构建失败时从 Jenkins 管道通知 slack 用户
问题描述
我正在从 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
变量的空值。
解决方案
如果它仍然与某人相关,我这样做了:
........
}
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,这将起作用
推荐阅读
- sql-server - 使用脚手架时添加模式名称作为表名的前缀
- javascript - 精灵旋转与碰撞 PIXIJS
- python - 每当我在 Python 中使用 random.choice 时,都会出现错误。错误在“正文”页面中
- python - Python:函数不返回
- python - Ansible:如何将字典(不确定数量的键:值对)转换为字符串?
- php - 如何限制woocommerce产品购买
- python - python中数字映射中相关变量的约束最小化
- c# - 在 C# 中将 if 转换为三元运算符
- asp.net-mvc - AADSTS750054:SAMLRequest 或 SAMLResponse 必须作为查询字符串参数出现在 SAML 重定向绑定的 HTTP 请求中
- r - 出了点问题;缺少所有准确度指标值:模型验证