我在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问题中没有看到这个问题。
为了完整性,这是我的Scanfile,Jenkinsfile和Fastfile
有人可以帮忙吗?我尝试过最新的fastlane,旧的fastlanes,仍然看到了这种行为。
我的DevOps和SA对我们感到非常不满,因为我们的工作永远不会结束,并且挂起我们的jenkins节点:)(中止/终止它们确实存在问题)
答案 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)