说我有一个Jenkinsfile。在该Jenkinsfile中,是以下sh步骤:
sh "myScript.sh"
在myScript.sh中,声明了以下变量:
MY_VARIABLE="This is my variable"
如何从我的Jenkins文件访问myScript.sh中声明的MY_VARIABLE?
答案 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