Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 詹金斯进行了n次失败的测试_Bash_Jenkins_Environment Variables_Jenkins Plugins - Fatal编程技术网

Bash 詹金斯进行了n次失败的测试

Bash 詹金斯进行了n次失败的测试,bash,jenkins,environment-variables,jenkins-plugins,Bash,Jenkins,Environment Variables,Jenkins Plugins,我试着在Jenkins考试失败的情况下重新进行n次测试。我见过Naginator,但我的团队不希望添加额外的插件。 注意:我们使用EnvInject将环境变量注入构建过程 下一个想法是保留一个带有重试次数的变量,并在每次新构建时将其递减。我正在努力寻找一个堆栈溢出链接,它建议使用如下的groovy脚本 def map = [:] Int newRetries = RETRIES.toInteger() - 1 map.put(“RETRIES”, newRetries) return map

我试着在Jenkins考试失败的情况下重新进行n次测试。我见过Naginator,但我的团队不希望添加额外的插件。 注意:我们使用EnvInject将环境变量注入构建过程

下一个想法是保留一个带有重试次数的变量,并在每次新构建时将其递减。我正在努力寻找一个堆栈溢出链接,它建议使用如下的groovy脚本

def map = [:]
Int newRetries = RETRIES.toInteger() - 1
map.put(“RETRIES”, newRetries)
return map
然而,PrepareanEnvironment to run部分中的groovy脚本需要管理员特权,这也是我的团队希望避免的

下一个想法是使用一个属性文件,按照echo RETRIES=$RETRIES-1>env.properties的思路做一些事情,并添加一个Inject环境变量步骤,该步骤读取env.properties

问题是在我们的Jenkins bash脚本中,echo RETRIES=$RETRIES-1打印RETRIES=$RETRIES-1

在本地终端我可以运行

RETRIES=5
echo "RETRIES=$((RETRIES-1))"

> RETRIES=4

,但在詹金斯,重试-1不会得到评估。你们有谁知道为什么吗?

所以我发现我犯了3个错误

Jenkins管道并行执行单个步骤。这意味着您不能在同一步骤的不同部分写入和读取文件,而不从该堆栈中读取未更新的文件

Jenkins上的默认shell是/usr/bin/sh,它不一定是bash。我用bash-ceho$Var显式地运行了我的脚本。这里真正的问题是远程机器是windows,oops

我的管道在从文件中读取更新的变量值之前失败。我已经将阅读步骤移到了前面的管道中


在bash脚本中,您有RETREIS,然后重试???@RamanSailopal很抱歉,这是一个复制文本的错误。我知道发生了什么,现在发布一个解决方案。