团队,
${env.test_USR}
无法在管道外使用
我能够在管道内设置和使用变量,但发送 slackNotify 时相同的变量不起作用。对于 slack 消息,我正在获取 null,这意味着未找到或读取 env var。任何提示如何在管道外定义 env var 以便 slack 可以使用它?
它适用于
gerritCheck
我得到了 id 但 var 没有为 slackNotify 调用设置。
错误输出
https://sonar.company.com/dashboard?id=null
`
预期
https://sonar.company.com/dashboard?id=test_12345
notifyChannel = "#sw-test"
sonarStageLink = "SonarQube: <https://sonar.company.com/dashboard?id=${env.test_USR}>"
def slackNotify(String status, String color) {
slackSend (
channel: notifyChannel,
color: color,
message: "Analysis: \n${sonarStageLink}\n"
)
}
pipeline {
agent {
label 'test'
}
environment {
RUN_SONAR_URL = 'https://sonar.company.com'
test = credentials('test-pullbranchanalysis')
post {
success {
gerritCheck checks: ['jenkins:code-analysis': 'SUCCESSFUL'], url: "id=${env.test_USR}"
script {
if (!params.Refresh) {
echo "success"
slackNotify("succeeded", "good")
这可能是变量定位的问题。如果您要将
sonarStageLink
变量作为环境变量移动到管道中,这应该开始工作:
def slackNotify() {
echo sonarStageLink
}
pipeline {
agent any
environment {
test_USR = "TEST"
sonarStageLink = "SonarQube: <https://sonar.company.com/dashboard?id=${env.test_USR}>"
}
stages {
stage('Hello') {
steps {
echo 'Hello'
}
}
}
post {
success {
script {
slackNotify()
}
}
}
}
结果: