如何从管道到Shell脚本访问groovy变量?

时间:2020-04-10 10:53:27

标签: jenkins jenkins-pipeline jenkins-groovy

我在管道中有一个全局变量,例如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的值被评估为空。您能帮我纠正上面的代码吗?

1 个答案:

答案 0 :(得分:0)

您在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
                        """
                }
            }
        }
    }
}