bash - 在 Jenkinsfile 中,如何访问在 sh 步骤中声明的变量?
问题描述
假设我有一个 Jenkinsfile。在该 Jenkinsfile 中,是以下 sh 步骤:
sh "myScript.sh"
在 myScript.sh 中,声明了以下变量:
MY_VARIABLE="This is my variable"
如何从我的 Jenkinsfile 访问在 myScript.sh 中声明的 MY_VARIABLE?
解决方案
要将脚本中定义的变量导入当前 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]
推荐阅读
- asp.net-web-api - 了解 ConcurrentDictionary 在 WEB API 中的工作原理
- java - 如何使用 Selenium 或 UFT14 自动化随机安全问题?
- r - 在组名下组织文件
- javascript - Vue & Sockets:处理来回发送消息
- c++ - 如何在主文件中实现 QGridLayout
- python - 从字典键和值打印到文本文件
- java - 我们如何在 Play 2.8 中提取 Json?我们正在升级到 Play 2.8 框架
- snowflake-cloud-data-platform - 将扁平化的 json 转换为 snowfalke 中的日期对象
- c# - 如何自动测试 QnA Maker Bot (Bot Framework V4, C#)?
- linux - 无法解释的 docker 重启