XCode Swift 代理后的包管理器错误
XCode Swift package manager error behind proxy
我们使用嵌入在 XCode 中的 Swift 包管理器来处理我们项目中的依赖项ci。在本地机器上使用时一切正常。但是,当我尝试在我们的 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 上使用 public 包,不需要任何身份验证。
从另一方面来说,如果项目是使用 Package.swift 的旧方法设置的,而我们 运行:
swift package resolve
依赖项ci 已成功解析,没有错误。
我已经完成了以下操作,但没有任何有用的解决方案:
Configuration for enterprise networks
XCode proxy settings
SPM in real life projects
Same issue on developer forum
SSH error resolving dependencies - 没有 ssh 依赖cies
也没有任何文档说明通过 XCode 解析包与使用 'swift package' 有何不同。
目前我不确定是否可以配置某些东西 XCode 使用 SPM 的代理设置或不支持通过代理的 Xcode SPM。有任何想法吗?欢迎提供任何帮助ci!
事实证明,如果我们只是配置代理以将其用于 git:
,则可以轻松解决问题
Getting Git to work with a proxy server - fails with "Request timed out"
根据我刚刚发现的内容,至少对于 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 配置设置正确)
我们使用嵌入在 XCode 中的 Swift 包管理器来处理我们项目中的依赖项ci。在本地机器上使用时一切正常。但是,当我尝试在我们的 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 上使用 public 包,不需要任何身份验证。
从另一方面来说,如果项目是使用 Package.swift 的旧方法设置的,而我们 运行:
swift package resolve
依赖项ci 已成功解析,没有错误。
我已经完成了以下操作,但没有任何有用的解决方案:
Configuration for enterprise networks
XCode proxy settings
SPM in real life projects
Same issue on developer forum
SSH error resolving dependencies - 没有 ssh 依赖cies
也没有任何文档说明通过 XCode 解析包与使用 'swift package' 有何不同。 目前我不确定是否可以配置某些东西 XCode 使用 SPM 的代理设置或不支持通过代理的 Xcode SPM。有任何想法吗?欢迎提供任何帮助ci!
事实证明,如果我们只是配置代理以将其用于 git:
,则可以轻松解决问题Getting Git to work with a proxy server - fails with "Request timed out"
根据我刚刚发现的内容,至少对于 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 配置设置正确)