【发布时间】:2023-12-22 00:46:01
【问题描述】:
我正在尝试在 Jenkins 失败时重新运行测试 n 次。我见过 Naginator,但我的团队不希望添加额外的插件。 (注:我们使用 EnvInject 将环境变量注入到构建过程中)
下一个想法是保留一个带有重试次数的变量,并在每次新构建时递减它。有一个堆栈溢出链接(我目前正在努力寻找)建议一个看起来像这样的 groovy 脚本
def map = [:]
Int newRetries = RETRIES.toInteger() - 1
map.put(“RETRIES”, newRetries)
return map
但是,“准备运行环境”部分中的 groovy 脚本需要管理员权限(我的团队也希望避免这种情况)。
下一个想法是使用属性文件,然后按照echo "RETRIES=$((RETRIES-1))" > env.properties 的方式做一些事情,并添加一个读取 env.properties 的 Inject Environmental variable 步骤。
问题是在我们的 Jenkins bash 脚本中 echo "RETRIES=$((RETRIES-1))" 打印“RETRIES=$((RETRIES-1))”
在本地终端我可以运行
RETRIES=5
echo "RETRIES=$((RETRIES-1))"
> RETRIES=4
,但在 Jenkins 中,RETRIES-1 不会被评估。你们中有人知道为什么吗?
【问题讨论】:
-
在 bash 脚本中你有 RETREIS 然后是 RETRIES??
-
@RamanSailopal 抱歉,这是复制文本时的拼写错误。我弄清楚发生了什么,现在正在发布解决方案。
标签: bash jenkins environment-variables jenkins-plugins