重试失败的xcodebuild测试

时间:2019-09-17 17:17:41

标签: bash jenkins xcodebuild

我正在为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的情况下如何处理这些重试?

2 个答案:

答案 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'
                }
            }
        }
    }
}

You can read about it here

希望这会帮助您好运。