将jenkins管道中设置的变量传递到shell脚本

我想通过jenkins作业将少量参数发送到用linux服务器编写的我的shell脚本之一。以下是我的詹金斯管道工作:

def MY_VAR
def BUILD_NUMber
pipeline {
    agent any
    stages {
        stage('Stage One') {
            steps {
                script {
                    BUILD_NUMber={currentBuild.number}
                    MY_VAR ='abc'
                }                         
            }
        }
        stage('Stage Two') {
            steps {                    
                sh '''
                    cd /scripts/
                    ./my_scripts.sh $BUILD_NUMber $MY_VAR'''
            }
        }
    }
}

在这里,我可以发送BUILD_NUMber的值,但不能发送MY_VAR的值。在我看来,由于MY_VAR已设置到管道中,所以才开始发生。有人可以帮忙解决该问题吗

freedu9999 回答:将jenkins管道中设置的变量传递到shell脚本

如果要在执行$MY_VAR步骤时对sh进行插值,则需要用双引号替换单引号。

def MY_VAR
def BUILD_NUMBER
pipeline {
    agent any
    stages {
        stage('Stage One') {
            steps {
                script {
                    BUILD_NUMBER={currentBuild.number}
                    MY_VAR ='abc'
                }                         
            }
        }
        stage('Stage Two') {
            steps {                    
                sh """
                    cd /scripts/
                    ./my_scripts.sh $BUILD_NUMBER $MY_VAR"""
            }
        }
    }
}

$BUILD_NUMBER之所以有用,是因为管道公开了env.BUILD_NUMBER,并且可以在shell步骤中作为bash的$BUILD_NUMBER env变量来访问此变量。另外,您可以将MY_VAR设置为环境变量,并在sh步骤中保留单引号。这样的事情应该可以解决问题:

pipeline {
    agent any
    stages {
        stage('Stage One') {
            steps {
                script {
                    //you can remove BUILD_NUMBER assignment - env.BUILD_NUMBER is already created.
                    //BUILD_NUMBER={currentBuild.number}
                    env.MY_VAR ='abc'
                }                         
            }
        }
        stage('Stage Two') {
            steps {                    
                sh '''
                    cd /scripts/
                    ./my_scripts.sh $BUILD_NUMBER $MY_VAR'''
            }
        }
    }
}
  

您可以了解有关Jenkins Pipeline环境变量from one of my blog posts的更多信息。

本文链接:https://www.f2er.com/3150353.html

大家都在问