如何解决代理背后的XCode Swift程序包管理器错误
我们使用XCode中嵌入的Swift程序包管理器来处理项目中的依赖项。在本地计算机上使用时,一切正常。但是,当我尝试在ci从站上构建项目时,出现以下错误(从XCode和控制台运行时):
xcodebuild -resolvePackageDependencies
Resolve Package Graph
Fetching https://github.com/hmlongco/Resolver.git
xcodebuild: error: Could not resolve package dependencies:
An unknown error occurred
在本地和ci从属服务器上运行它的区别在于,ci机器是在代理后面配置的。我们已经将运行此命令时访问的所有URL列入了白名单,但是问题仍然存在。我找不到有关此错误的任何详细日志。
通过检查运行命令时发送的网络程序包,我们仍然可以看到某些应用程序正在尝试访问直接URL,而不是通过代理,从而收到超时。我们仅在github上使用公共软件包,并且不需要任何身份验证。
从另一面看,如果使用Package.swift设置了旧项目,则运行:
swift package resolve
依赖关系已成功解决,没有错误。
我已经经历了以下内容,但是没有任何有用的解决方案:
Configuration for enterprise networks
XCode proxy settings
SPM in real life projects
Same issue on developer forum
SSH error resolving dependencies-没有ssh依赖项
也没有任何文档说明通过XCode解析软件包与使用“ swift软件包”有何不同。 当前,我不确定是否可以进行配置,因此不支持XCode使用SPM的代理设置,或者不支持通过代理的Xcode SPM。有任何想法吗?任何帮助表示赞赏!
解决方法
从我刚刚发现的情况来看,至少对于 Xcode 12.4,xcodebuild 有 -scmProvider
选项:
-scmProvider which implementation to use for Git operations (system/xcode)
如果我猜对了,-scmProvider system
会强制 xcodebuild 使用“系统”git。反过来,就我而言,这使它尊重我拥有的 git 配置设置,尤其是代理。
因此,回答最初的问题,可能值得一试
xcodebuild -resolvePackageDependencies -scmProvider system
(只要正确设置了 Git 配置)
,如果我们仅将代理配置为与git一起使用,那么结果很简单:
Getting Git to work with a proxy server - fails with "Request timed out"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。