这同时使用了Slack插件和Build User Vars插件。我正在尝试使用
BUILD_USER_FIRST_NAME
来识别Slack退回到哪个通道(即,开始构建的通道应该是获取消息的通道)。 本文的中途介绍了如何在管道作业中使用构建用户插件,但是替换变量让我大跌眼镜。
工作的相关部分看起来像这样;
stage ('message') {
wrap([$class: 'BuildUser']) {
sh "printf '%s' ${BUILD_USER_FIRST_NAME} > name.txt"
}
archiveArtifacts artifacts: 'name.txt'
name = readFile('name.txt')
echo "name is $name" //works fine, I get Alex
if ( "$output" != null ) {
slackSend (channel: '@$name', color: '#36A64F', message: "Job succeeded")
} else {
slackSend (channel: '@$name', color: '#36A64F', message: "Job failed")
}
}
我已经尝试了以下方法来代替通道位,都有失败并出现不确定的
Slack post may have failed. Response: Invalid channel specified
错误。channel: '@${name}',
channel: '@" + ${name} + "',
channel: '@"${name}"',
预期的输出是它将解析为
channel: '@Alex',
正确的语法是什么?
#1 楼
在Groovy中,您必须使用双引号来获取字符串插值: if ( "$output" != null ) {
slackSend (channel: "@${name}", color: '#36A64F', message: "Job succeeded")
} else {
slackSend (channel: "@${name}", color: '#36A64F', message: "Job failed")
}
您也可以做这样的事情来完全避免它并减少重复:
name = '@' + readFile('name.txt')
slackSend (channel: name //etc.