我已经为 xcframework 创建了一个 Swift 包,但我们无法将其包含在 git 存储库中(这样做会破坏签名)。 Swift 包只有一个
.binaryTarget
,它作为压缩存档托管在我们的 JFrog 帐户上。我可以使用 curl -v --progress-bar -u $JFROG_USERNAME:$JFROG_PASSWORD -L https://myCompany.jfrog.io/artifactory/binaries/path/to/xcframework.zip -o framework.zip
下载存档。我可以通过 Xcode 访问 Swift 包(托管在我们的 GitHub Enterprise 帐户中),但当 Xcode 尝试下载框架时出现 failed downloading 'https://myCompany.jfrog.io/artifactory/binaries/path/to/xcframework.zip' which is required by binary target 'myTarget': badResponseStatusCode (401)
错误。
我尝试使用包的 https url,并从 Xcode 添加包工作流程中的 GitHub 源代码控制帐户列表中选择包。我还尝试在 .netrc 中添加一个条目
myCompany.jfrog.io
(来自此处的讨论 https://forums.swift.org/t/spm-support-basic-auth-for-non-git-binary-dependency -hosts/37878/7)但这并没有改变结果。
是否可以在 Xcode 中下载需要额外身份验证的 Swift 包依赖项?
我们需要一个通过 GitHub Actions 支持个人开发人员以及 CI/CD 的解决方案。
就我而言,它通过在我的 spm repo 文件夹上运行此命令来改善情况:
swift package resolve --verbose
通过这样做,我将获得下载的 spm 所需的所有工件,终端消息如下:
信息:在 /Users/username/.netrc 的 netrc 文件中找到 https://foo.zip 的凭据
或
而且由于 SPM 似乎保留了内部下载的每个版本的缓存从缓存中获取二进制工件https://foo.zip
~/Library/Developer/Caches/
如果我现在使用该 SPM 进入我的项目,并且我添加并重置了包缓存几次,其中之一确实对我有用。看起来问题并不是真正的下载本身,而 401 也不是真正的问题。
谁知道呢。我也有点责怪ESET。不确定是 Sequoia、Xcode16、ESET 还是其他。但这在以前绝对不是问题。由于我的缓存中有我的工件,它的运行没有被注意到。仅当这些缓存被清理后,问题才出现。
我希望这可以帮助那些感到孤独和完全黑暗的人。