首页 > 解决方案 > 在 Jenkinsfile 中,如何访问在 sh 步骤中声明的变量?

问题描述

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

sh "myScript.sh"

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

MY_VARIABLE="This is my variable"

如何从我的 Jenkinsfile 访问在 myScript.sh 中声明的 MY_VARIABLE?

标签: bashvariablesgroovyjenkins-pipelinesh

解决方案


要将脚本中定义的变量导入当前 shell,可以使用source命令(参见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]

推荐阅读