Azure DevOps 管道中的 Carthage 复制框架失败

Posted

技术标签:

【中文标题】Azure DevOps 管道中的 Carthage 复制框架失败【英文标题】:Carthage copy-frameworks fails in Azure DevOps pipeline 【发布时间】:2020-03-06 18:40:48 【问题描述】:

我的项目使用 Carthage 并在本地成功构建,但是当我尝试在 Microsoft 托管代理上使用 Azure DevOps 管道构建它时,我收到此错误:

以下构建命令失败:

PhaseScriptExecution Carthage\ Copy\ Frameworks /Users/runner/Library/Developer/Xcode/DerivedData/My-Scheme-euhffgcbmkrrcmfffhaqpabtlubp/Build/Intermediates.noindex/My-Scheme.build/Release-iphoneos/My-Scheme.build/脚本-DB5433C1239AF75F00C0B252.sh (1 次失败)

[error] 错误:/usr/bin/xcodebuild 失败,返回码:65

这是我的 Carthage Copy Frameworks 构建阶段:

/usr/local/bin/carthage copy-frameworks

我的猜测是 Azure 机器的配置有所不同,但我不知道要修复什么或如何修复它。

我也遇到了这个错误:

❌ 致命错误:/Applications/Xcode_10.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo:输入文件:/Users/runner/Library/Developer/Xcode/DerivedData/My- Scheme-euhffgcbmkrrcmfffhaqpabtlubp/Build/Products/Release-iphoneos/Realm.framework.dSYM/Contents/Resources/DWARF/Realm 自打开后已更改(未定义错误:0)

【问题讨论】:

您可以尝试将azure管道中xcode任务的sdkxcodeVersion设置为与本地机器相同吗? 【参考方案1】:

即使 Carthage 在本地没有引起任何问题,如果您的方案构建了多个运行 carthage copy-frameworks 命令的目标,代理机器可能会抛出类似上述错误:Realm changed since opened (Undefined error: 0)

似乎正在同时访问相同的文件,因为正在并行构建多个目标。就我而言,carthage copy-frameworks 正在为我的应用程序目标和测试目标运行。解决此问题的方法是让您的方案仅构建应用目标:

Product > Scheme > Edit Scheme > Build (n targets) > Target to Remove > Select -

【讨论】:

以上是关于Azure DevOps 管道中的 Carthage 复制框架失败的主要内容,如果未能解决你的问题,请参考以下文章

Azure DevOps 管道中的 Carthage 复制框架失败

Azure Databricks 的 Azure DevOps 管道

.nu​​spec 文件中的 Azure DevOps 管道变量

如何在 yaml 中处理 Azure DevOps 管道中的错误?

在 PowerShell 脚本中访问 Azure DevOps 管道中的安全文件

有没有办法更新 Azure DevOps 管道中的变量组变量?