我在Jenkins CI服务器上正在使用一些构建脚本。为了保持组织性,我倾向于将作业中的每个“Execute Shell”部分缩小并隔离在范围内。在Jenkins的“Execute Shell”部分之间维护配置变量
比方说,我正在建立一个字符串值,我希望以后在我的工作中的各个地方使用。 (例如与标签,日期格式等相关的标签,消息的名字......)
Execute Shell #1
# Utilizing Multiple Lines and temporary variables for readability
tagName="$tagName_Sub1 $tagName_Sub2 $tagName_Sub3"
Execute Shell #2
# Build Script - tagName is an argument to my build script
run build_job $tagName
Execute Shell #3
# Tag Git
git tag -a $tagName
Execute Shell #4
# Something else
echo "Hello World, $tagName"
它看起来像你真正想要的是一个数组,而不是一个字符串。考虑*定义一个数组:'tagNames =(“$ tagName_Sub1”“$ tagName_Sub2”“$ tagName_Sub3”)',然后用'“{{tagNames [@]}''适当地使用它。 –
否则,当您尝试使用带有文字空间的标签名称时,会出现非常不愉快的时间,并且非空格字符已临时添加到IFS中,或者可以解释为glob匹配文件系统内容。 –
...参见http://mywiki.wooledge.org/BashFAQ/050 - 该处的警告和建议适用于任何情况,其中'$ foo'(不包括双引号)被用作命令行生成的一部分。 –