不能在 jenkins 管道之外的 groovy 脚本中使用 env 变量

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

团队,

${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")
groovy jenkins-pipeline jenkins-groovy
1个回答
0
投票

这可能是变量定位的问题。如果您要将

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()
            }
        }
    }
}

结果:

SonarQube:https://sonar.company.com/dashboard?id=TEST

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