ios - Fastlane Scan 的构建过程错过了 Jenkins CI 上的 CocoaPod 框架
问题描述
我们在我们的应用程序中使用 Fastlane 在 Jenkins CI 环境中运行测试。该test
通道一直运行良好,直到几天前突然间,由于构建过程跳过了 Firebase pod,我们的大多数测试运行开始失败,这导致项目中涉及 Firebase 的每个类都无法编译。据我们所知,当时项目文件没有发生任何变化,并且测试通道在我们的本地环境中仍然可以完美运行。
注意:清除 CI 服务器上的 Cocoapod 缓存似乎可以暂时解决问题,但它很快就会返回。我宁愿不把它作为构建过程的一部分,因为下载 Cocoapods 存储库非常耗时,并且如果我们在每次 CI 运行时都这样做会占用大量带宽。
有谁知道什么可能导致xcodebuild
Jenkins 服务器上的 Fastlane 调用的行为与本地不同?
解决方案
好吧,我们找到了两个部分的解决方案:
- 我们将构建框限制为一次仅处理一个 CI 请求。它同时运行了 2 个,我们怀疑这可能会导致 cocoapods 出现问题,并导致我们的测试套件中超时失败的发生率更高。
- 我们删除了所有新的失败构建的 Jenkins 工作区文件夹并重新运行了构建。这似乎普遍解决了这个问题。我们目前正在尝试让每个 Jenkins 运行删除工作区文件夹作为它的第一个操作,因为我们不需要旧的工件作为我们 CI 过程的一部分,只需要最后一个测试操作的产品。
推荐阅读
- ruby-on-rails - 以非 root 用户身份在 Gitlab CI 中运行 Elasticsearch
- fetch - 为什么我在获取消息时收到错误消息?
- python - 在 tkinter 中,它显示“TypeError:并非所有参数都在字符串格式化期间转换”
- android - Android ViewPager2 FragmentStateAdapter 显示每个片段的菜单
- python - 使用相同的根标签和行标签在 pyspark 中读取 XML
- python - Python 'different_locale' 错误的语言环境转换
- sp-blitz - 更新 blitz 'Procedure [s p_Blitz] 时出错,'FROM A' 附近的第 xxx 行语法不正确
- ios - 是否可以手动安装最新的 Firebase Crashlytics iOS SDK?
- java - 如何防止直接访问同一类中 getter/setter 之外的私有成员?
- sql - 如何使用 nq'[]' 运算符在 oracle 中保存值