在Jenkinsfile中,如何访问在sh步骤中声明的变量?

时间:2019-04-11 05:43:35

标签: bash variables groovy jenkins-pipeline sh

说我有一个Jenkinsfile。在该Jenkinsfile中,是以下sh步骤:

sh "myScript.sh"

在myScript.sh中,声明了以下变量:

MY_VARIABLE="This is my variable"

如何从我的Jenkins文件访问myScript.sh中声明的MY_VARIABLE?

2 个答案:

答案 0 :(得分:1)

要将脚本中定义的变量导入到当前shell中,可以使用source命令(请参见explanation on SU):

# Either via command
source myScript.sh
# Or via built-in synonym
. myScript.sh

假设脚本不输出任何内容,则可以输出变量以在Jenkins中获取它:

def myVar = sh(returnStdout: true, script: '. myScript.sh && echo $MY_VARIABLE')

如果确实输出来自您的脚本,则您可以在每个shell中获取最后一个输出:

(. myScript.sh && echo $MY_VARIABLE) | tail -n1

或通过Groovy:

def out = sh(returnStdout: true, script: '. myScript.sh && echo $MY_VARIABLE')
def myVar = out.tokenize('\n')[-1]

答案 1 :(得分:0)

.sh文件中声明的bash变量以管道步骤sh完成结束。

但是您可以使.sh生成属性文件,然后使用管道步骤:readProperties将文件读入对象以供访问。

// myScript.sh
...

echo MY_VARIABLE=This is my variable > vars.properties


// pipeline 
sh 'myScript.sh'
def props = readProperties file: 'vars.properties'
echo props.MY_VARIABLE