Fastlane Scan 的构建过程错过了 Jenkins CI 上的 CocoaPod 框架
Posted
技术标签:
【中文标题】Fastlane Scan 的构建过程错过了 Jenkins CI 上的 CocoaPod 框架【英文标题】:Fastlane Scan's build process misses a CocoaPod framework on Jenkins CI 【发布时间】:2019-05-01 14:35:59 【问题描述】:我们在应用中使用 Fastlane 在 Jenkins CI 环境中运行测试。 test
通道一直运行良好,直到几天前突然之间,由于构建过程跳过 Firebase pod,我们的大多数测试运行开始失败,然后导致项目中涉及 Firebase 的每个类都无法运行编译。据我们所知,当时项目文件没有发生任何变化,并且测试通道在我们的本地环境中仍然可以完美运行。
注意:清除 CI 服务器上的 Cocoapod 缓存似乎可以暂时解决问题,但很快就会恢复。我宁愿不将此作为构建过程的一部分,因为下载 Cocoapods 存储库非常耗时,并且如果我们在每次 CI 运行时都这样做会占用大量带宽。
有谁知道什么会导致 xcodebuild
的 Fastlane 调用在 Jenkins 服务器上的行为与本地不同?
【问题讨论】:
--verbose
在本地与在 Jenkins 环境中的车道的任何其他输出差异?
我无法检测到。我们确实找到了解决方案...似乎我们的构建服务器配置错误并且以某种方式损坏了 Jenkins 工作区。
【参考方案1】:
好吧,我们找到了两个部分的解决方案:
-
我们将构建框限制为一次仅处理一个 CI 请求。它同时运行了多达 2 个,我们怀疑这可能会导致 cocoapods 出现问题,并导致我们的测试套件中超时失败的发生率更高。
我们删除了所有新的失败构建的 Jenkins 工作区文件夹并重新运行构建。这似乎普遍解决了这个问题。我们目前正在尝试让每个 Jenkins 运行删除工作区文件夹作为其第一个操作,因为我们不需要旧工件作为我们 CI 流程的一部分,只需要最后一个测试操作的产品。
【讨论】:
以上是关于Fastlane Scan 的构建过程错过了 Jenkins CI 上的 CocoaPod 框架的主要内容,如果未能解决你的问题,请参考以下文章
iOS Swift UI Tests (XCUITests) 稳定性问题 - fastlane scan
第一次 UITest 失败时如何中止 Fastlane Scan 测试
如何使用 fastlane Fastfile 通道自动化 xcode 清理过程