为什么fastlane扫描测试会在Jenkins管道中继续重建和运行?

时间:2017-03-14 16:43:01

标签: jenkins jenkins-pipeline fastlane

我在Jenkins上运行了一个运行iOS单元测试的管道作业。

当我们的测试失败时,我看到一些非常奇怪的行为,fastlane在其摘要中显示失败,但随后开始重建代码并重新测试。

这种情况不断发生,我无法弄清楚它是否是我缺少的快速通道/扫描设置,或者是在Jenkins管道中运行它的东西。

bundle exec fastlane test本地运行就好了,每次扫描文件中定义的设备只执行一次。

我的控制台输出如下:

[11:26:36]: fastlane finished with errors
[!] Test execution failed. Exit status: 65
#######################################################################
# fastlane 2.19.3 is available. You are on 2.17.0.
# It is recommended to use the latest version.
# Please update using `bundle update fastlane`.
#######################################################################
2.19.3 sigh Hotfix
* fix sigh undefined variable regression (#8457)
2.19.2 Snapshot improvements and more
* Add tests for ReportsGenerator available_devices
* Fix HTML report generation for snapshot
* Prioritize options passed to supply
* Collect logs for iOS 10+ devices
* Add row for Fabric.app-installed fastlane to env command
* Sigh reports better errors for team members
* Expand the notes_path parameter
* Update xcov intialization
2.19.1 Hot fix for provisioning profile creation/deletion
- Re-implement csrf token retrieval for provisioning profiles (#8410)
- don't attempt to create apps on the dev center and itc if mac app (#8404)
To see all new releases, open https://github.com/fastlane/fastlane/releases
Please update using `bundle update fastlane`
/Users/hudson/build/workspace/MNELastWord-PR-Pipeline@tmp/durable-ba2bbebe/script.sh: line 2: shell_session_update: command not found
Sending interrupt signal to process
▸ Cleaning Pods/CocoaLumberjack-iOS [Debug]
▸ Check Dependencies
▸ Cleaning Pods/Bento-iOS-Lib-iOS-BentoResources [Debug]
▸ Check Dependencies
▸ Cleaning Pods/AFNetworking-iOS [Debug]
▸ Check Dependencies
▸ Cleaning Pods/JSONModel-iOS [Debug]

你可以看到在fastlane完成之后,它只是继续它的快乐方式并开始重建和重新测试,而不是退出工作。

根据这个输出,我认为它是Fastlane中的一个导致它重新执行的东西,因为Jenkins没有输出表明舞台再次被调用。

那就是说,除了Snapshot有重试选项(我没有使用快照)之外,我在Github上的fastlane问题中没有看到这个问题。

为了完整性,这是我的ScanfileJenkinsfileFastfile

和来自相关jenkins配置的屏幕:Jenkins Screenshot

有人可以帮忙吗?我尝试过最新的fastlane,旧的fastlanes,仍然看到了这种行为。

我的DevOps和SA对我们感到非常不满,因为我们的工作永远不会结束,并且挂起我们的jenkins节点:)(中止/终止它们确实存在问题)

2 个答案:

答案 0 :(得分:1)

所以最终我认为我已经在这里找到了问题的根源。

如果我将Test阶段包装在try / catch块中,那么我会从作业中获得适当的行为。

stage 'Tests'
            try {
                    env.FASTLANE_EXPLICIT_OPEN_SIMULATOR = 1
                    bash 'bundle exec fastlane test'
                } catch (e) {
                    currentBuild.result = 'FAILURE'
                    throw e
                }

这并不是真的有意义,因为我的整个部分都包含在try / catch中 - 所以如果有人知道为什么这样做有用,我全都听见了。 但至少我现在能够解决这个问题。

答案 1 :(得分:0)

看起来测试用例失败了,但詹金斯的工作并未停止。 这里可能有两种可能性:

  1. 一旦测试用例失败,请尝试退出作业,因此以后将不再继续,因此如果测试用例执行失败,则添加显式退出1 例子

    ImagePicker
  2. 检查测试用例是否更改了源代码文件,并将提交提交回SCM,并且在提交/推动Jenkins时将进行轮询,从而导致循环。

要解决此问题,请在提交/用户/消息的基础上忽略轮询。添加屏幕截图以供参考

enter image description here