【问题标题】:Retry failed xcodebuild test重试失败的 xcodebuild 测试
【发布时间】:2019-09-17 17:17:41
【问题描述】:

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

【问题讨论】:

  • 如果您的问题的答案之一是正确的,您应该考虑接受它。

标签: bash jenkins xcodebuild


【解决方案1】:

从 jenkins 的角度来看 - 如果脚本遇到错误,它总是会提前退出,所以你可以尝试这种类型的语法来防止这种情况(在 jenkins 配置中,而不是在脚本本身中)

jenkins_build_script.sh || true
# continue with things...

另外,如果您在捕获故障本身时遇到问题 - 尝试将 xcodebuild 输出通过管道传输到日志文件,然后使用 grep 查找您预期的错误。

【讨论】:

    【解决方案2】:

    既然你说它是由 Jenkins 运行的脚本,你可以从 Jenkins 管道而不是在 shell 脚本中处理重试。

    如文档中的示例

    pipeline {
        agent any
        stages {
            stage('Deploy') {
                steps {
                    retry(3) {
                        sh './flakey-deploy.sh'
                    }
                }
            }
        }
    }
    

    You can read about it here

    希望这将有助于好运。

    【讨论】:

      猜你喜欢
      • 2017-02-14
      • 2015-02-10
      • 2018-09-13
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多