我正在为iOS应用程序构建/测试检查构建自定义的Jenkins构建脚本(sh)。 但是有时UI测试仅由于计时问题而失败,因此我希望它再运行几次以确保问题是真实的。
for (( ATTEMPT=1; ATTEMPT<=2; ATTEMPT++ ))
do
xcodebuild [flags] test #add_result_saving_mechanism
#if failed, do smth to go to next attempt. Else - break
if SOME_KIND_OF_FAIL_CHECK; then
continue
else
break
fi
fi
我以前使用过xcpretty,因此能够读取$ PIPESTATUS并做出相应的反应,但是由于某些原因,xcpretty因xcodebuild test
而崩溃,因此寻找了没有它的方法
xcodebuild [flags] test | xcpretty
STATUS="${PIPESTATUS}"
if [ "$STATUS" != "0" ]; then
FAILURE_MSG="${TARGET} (${BUILD_NAME}) failed UI/Unit testing"
#try next attempt if available
continue
else
break
fi
在没有管道/ xcpretty的情况下如何处理这些重试?
答案 0 :(得分:0)
从jenkins角度来看-如果脚本遇到错误,它通常会提早保释,因此您可以尝试使用这种语法来防止这种情况(在jenkins配置中,而不是在脚本本身中)
jenkins_build_script.sh || true
# continue with things...
此外,如果您在捕获故障本身时遇到麻烦,请尝试将xcodebuild输出通过管道传输到日志文件,然后重复查找您所预期的错误。
答案 1 :(得分:0)
由于您说的是Jenkins运行的脚本,因此您可以从Jenkins管道而不是在shell脚本中处理重试。
如文档示例
pipeline {
agent any
stages {
stage('Deploy') {
steps {
retry(3) {
sh './flakey-deploy.sh'
}
}
}
}
}
希望这会帮助您好运。