生成报告后,如果测试失败,如何使jenkins的构建失败?

时间:2019-04-10 20:01:52

标签: ios xcode jenkins

因此,我试图学习有关jenkins的更多信息,并且我开发了一个Shell脚本,该脚本对我的iOS项目执行测试并生成报告。我将脚本设置为在检测到故障后立即退出(因为这是我知道如何在测试失败时使构建失败的唯一方法)。

这就是为什么未生成报告的原因。因为一旦测试失败我就退出了脚本。但是我不熟悉如何使构建失败,而不在生成报告之前退出。我该怎么做才能避免这种情况?这是我当前的shell脚本:

set -o pipefail && xcodebuild -project "Tests.xcodeproj" 
    -scheme "Testing" 
    -sdk "iphonesimulator12.2" 
    -destination "platform=iOS Simulator,OS=latest,name=iPhone 7" 
    test -only-testing:"UITests/UITests" 
    -resultBundlePath TestResults | xcpretty
xchtmlreport -r TestResults

3 个答案:

答案 0 :(得分:0)

您可以使用

  

always(){//这里有一些代码}

节到特定阶段或管道。将报告生成放在该块中。请参阅https://jenkins.io/doc/book/pipeline/syntax/#post-conditions

在自由式项目中,您可以添加构建后操作

答案 1 :(得分:0)

通常,您将执行所有测试,并在结果文件中报告每个测试用例状态(在我的情况下,对于Java / JavaScript,这在JUnit format中)。 运行完所有测试后,您将使用适当的Jenkins插件步骤(在我的情况下为junit发布结果文件。

答案 2 :(得分:0)

使用Fastlane的Jenkins中的管道/工作流程作业:我所做的是,我根据构建状态将post块设置为运行三个不同的通道。 post块具有称为成功,不稳定和失败的子锁。 post块的子块中的通道分别针对以下三种可能性(成功构建和所有测试通过,成功构建和1个或多个测试失败以及构建失败)用SUCCESS,UNSTABLE或FAILED张贴一条松弛消息。我使用危险宝石将测试结果摘要发回到存储库注释中的拉取请求中。看到这里-> https://www.jenkins.io/doc/book/pipeline/syntax/#post