如何解决需要额外身份验证的 Swift Package 依赖?

问题描述 投票:0回答:1

我已经为 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 的解决方案。

xcode github artifactory swift-package-manager
1个回答
0
投票

就我而言,它通过在我的 spm repo 文件夹上运行此命令来改善情况:

swift package resolve --verbose

通过这样做,我将获得下载的 spm 所需的所有工件,终端消息如下:

信息:在 /Users/username/.netrc 的 netrc 文件中找到 https://foo.zip 的凭据

从缓存中获取二进制工件https://foo.zip

而且由于 SPM 似乎保留了内部下载的每个版本的缓存

~/Library/Developer/Caches/
如果我现在使用该 SPM 进入我的项目,并且我添加并重置了包缓存几次,其中之一确实对我有用。

看起来问题并不是真正的下载本身,而 401 也不是真正的问题。

谁知道呢。我也有点责怪ESET。不确定是 Sequoia、Xcode16、ESET 还是其他。但这在以前绝对不是问题。由于我的缓存中有我的工件,它的运行没有被注意到。仅当这些缓存被清理后,问题才出现。

我希望这可以帮助那些感到孤独和完全黑暗的人。

© www.soinside.com 2019 - 2024. All rights reserved.