jenkins - 如何在 Jenkins 声明式管道的 steps.sh 脚本中声明一个新变量?
问题描述
在我的 groovy 课程中,我有一个步骤:
def mergedBranch = steps.sh label:"Get the latest merged branch", script: """
declare branch
for branch in ${all_merged_branches};
do
merged_branch=$branch;
echo $merged_branch
break;
done
""", returnStdout: true
但是,每次我在管道上运行它时,都会收到一条错误消息:
No such property: branch for class: <classname>
如果我将脚本更改为使用三重单引号,则不会出现此错误,但我不能使用 Groovy 的字符串插值,它只发生在双引号字符串中。我能做些什么?
解决方案
问题是所有变量都在双引号中时由 jenkins 评估。如果没有在环境中定义所有变量,您应该简单地转义分支和合并分支变量,即\$branch
和 '\$merged_branch`
如果all_merged_branches
存在于环境变量中,您可以简单地将步骤重写为
def mergedBranch = steps.sh label:"Get the latest merged branch", script: '''
declare branch
for branch in ${all_merged_branches};
do
merged_branch=$branch;
echo $merged_branch
break;
done
''', returnStdout: true
推荐阅读
- react-native - ???com.facebook.react.bridge.ReadableNativeMap.getValue
- git - How to determine which parent is the first one for a merge commit in Git
- javascript - 在 Rails 中实时创建或更新前端的元素,按预设的时间间隔触发
- excel - 使用日期范围从 Excel 中的主表中搜索数据
- javascript - 如何将字符串转换为数组,其中字符串是数组形式,字符串内的值是乳胶
- django - Users not writing to database (Postgresql)
- java - How do I remove an element the user input from an ArrayList when it contains both strings and integers?
- gcc - Dockerfile build distutils.errors.DistutilsExecError: command 'gcc' failed with exit status 1
- ios - UICollectionView with a custom data Structure
- c# - Covariance in c# is not type safe. This statement applies fine when dealing with arrays, but not when dealing with Ienumerables. Why?