【发布时间】:2016-01-07 20:33:34
【问题描述】:
Crashlytics 作为 cocoapod 正在破坏我们的 CI 系统。基本上我们有一个 Rakefile,它运行一些任务来更新 pod、构建我们的应用程序和运行测试等。但是,我们最近切换到 Fabric 和 Crashlytics 作为 cocoapods。现在我们的自动化构建在 pod 更新阶段失败并出现以下错误:
[!] Error installing Crashlytics
[!] /usr/bin/curl -f -L -o /var/folders/fx/hfsy48h13839_jm5wmkp5mx00000gn/T/d20151009-74266-1p34ehf/file.zip https://kit-downloads.fabric.io/ios/com.twitter.crashlytics.ios/3.3.4/com.twitter.crashlytics.ios-default.zip --create-dirs
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (6) Could not resolve host: kit-downloads.fabric.io
Update all pods
Analyzing dependencies
由于 Crashlytics 安装失败,因此未生成工作区。 我认为出现了两个问题: 1. Crashlytics pod 在脚本文件中运行该命令时尝试下载并写入它无权写入的系统文件(我们不想以 sudos 运行脚本) 2. 这个端点实际上有点不稳定。
如果我在终端中手动运行该 curl 命令,它大部分时间都会成功并下载文件。但是,有时该 curl 命令实际上无法解析主机。但是,我还有两台虚拟机可以成功运行 curl 命令,而无需执行 sudo usr/bin/curl/... 但是我们的一个虚拟机(它是另一个虚拟机的精确克隆)确实需要 sudo usr/bin/curl。 .. 获得对该文件夹的写入权限。
如果我在 Rakefile 中运行该 curl 命令,我会得到: $耙 您无权创建 /var/folders/fx。
同样,我认为问题在于尝试从 Rakefile 进行 pod 更新会导致文件写入权限问题,因为 Crashlytics 尝试将文件下载到系统 /var/folder 是不允许的。此外,该端点也可能不稳定并因无法解析主机而失败。
所以基本上解决方法是在我们的 CI 机器上的终端中手动运行该 curl 命令,以便下载和安装。现在,只要我们使用相同版本的 CRASHLYTICS,任何未来的 pod 更新都有效。所以现在,我们冻结了 3.3.4 上的 Crashlytics 安装。
任何人都遇到过类似的问题,对他们认为正在发生的事情有什么建议,或者对如何解决这个问题有更好的建议?
【问题讨论】:
-
原来 curl 命令经常更改,可能与每个 pod 更新一样频繁。我们能找到的唯一解决方法是为所有用户添加对 /var/folders/fx 的读/写访问权限,这远非理想。 sudo chmod -R a+rw /var/folders/fx/
-
作为更新,我们最终放弃了使用 Fabric 和 Crashlytics cocoapods,只是手动导入了框架,因为我们继续遇到与原始帖子相似的随机 CC 更新失败。跨度>
-
你是如何解决这个问题的,我在 cocoapod 网站上看到他们在 2016 年 9 月更新了 Crashlytics cocoapods
-
请告诉我您是如何手动导入框架的
-
当然。在使用 Fabric 和 Crashlytics 的项目中成功更新 Pod 后(您始终可以制作一次性项目),您可以在项目的 Pods 文件夹中找到框架文件。把它们复制出来。然后手动将这些框架导入到您的其他项目中。顺便说一句,在我们放弃在 CI 系统中使用虚拟机后,一切都开始正常了。
标签: ios continuous-integration cocoapods crashlytics twitter-fabric