【问题标题】:How to access groovy variable from pipeline into shell script?如何从管道访问 groovy 变量到 shell 脚本?
【发布时间】:2020-04-10 10:53:27
【问题描述】:

我在管道中有一个全局变量BACKUP_DIR_NAME,在管道内的 shell 脚本中,我想使用它构建路径,因此有以下代码 -

BACKUP_DIR_NAME="10-04-2020"

pipeline {
    agent any

    stages {

        stage('First') {
            steps {
                script {

                    sh '''
                       BACKUP_DIR_PATH="/home/oracle/SeleniumFramework/SeleniumResultsBackup/"$BACKUP_DIR_NAME"/"
                        echo "Directory path is "$BACKUP_DIR_PATH
                        '''

                }
            }
        }
    }
}

执行此操作时,我可以看到 BACKUP_DIR_NAME 的值被评估为空。你能帮我更正上面的代码吗?

【问题讨论】:

标签: jenkins jenkins-pipeline jenkins-groovy


【解决方案1】:

您在sh 步骤中混合了两种类型的变量。在第一行中,您尝试访问 Groovy 变量并插入其值以构造 shell 变量。在第二行中,您希望访问这个 shell 变量。

为了满足第一部分,你需要使用双引号来构造一个支持变量插值的Groovy字符串。为了满足第二部分,您需要转义 \$ 以防止 $BACKUP_DIR_PATH 被插值。

BACKUP_DIR_NAME="10-04-2020"

pipeline {
    agent any

    stages {

        stage('First') {
            steps {
                script {
                    sh """
                       BACKUP_DIR_PATH="/home/oracle/SeleniumFramework/SeleniumResultsBackup/"$BACKUP_DIR_NAME"/"
                        echo "Directory path is "\$BACKUP_DIR_PATH
                        """
                }
            }
        }
    }
}

【讨论】:

  • 这有帮助!感谢您的详细解释,以便清楚地了解事情。