我们的CI系统在使用Cocoapod中的Crashlytics时出现了问题。基本上,我们有一个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. 当在脚本文件中运行该命令时(我们不想使用sudo运行脚本),Crashlytics pod尝试下载并写入系统文件,但它没有写入权限。 2. 该端点实际上有点不稳定。
如果我在终端手动运行curl命令,大多数情况下它会成功下载文件。然而,有时候这个curl命令确实无法解析主机。同时,我有两台虚拟机可以成功运行该curl命令,而不需要sudo usr/bin/curl/...,但其中一台虚拟机(完全克隆另一台)确实需要sudo usr/bin/curl...才能获取对该文件夹的写入访问权限。
如果我只运行Rakefile中的curl命令,我会得到以下结果: $ rake 您没有创建/var/folders/fx的权限。
所以,我认为问题在于从Rakefile尝试进行pod更新会导致文件写入权限问题,因为Crashlytics尝试将文件下载到系统/var/folder,而这是不被允许的。此外,该端点可能也不稳定,并且由于无法解析主机而失败。
因此,基本解决方法是在CI机器上手动运行该curl命令,以便下载和安装。现在,只要我们保持在相同的Crashlytics版本上,任何未来的pod更新都可以正常工作。因此,我们现在将Crashlytics安装冻结在3.3.4版本。
如果有人遇到类似问题,或者对他们认为正在发生的事情有任何建议,或者有更好的修复建议,请告诉我。