如何从命令行触发Xcode的“更新到最新程序包版本”? 目标:问题:

目标:

我想以编程方式更新示例项目使用的Swift软件包的版本。

问题:

Xcode> 11提供了一个菜单选项:

  

文件> Swift软件包>更新到最新软件包版本

这将更新Package.resolved文件以指向特定版本。

此文件位于:

MyProject.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

如何从命令行触发CI构建的此操作?

coldseeps 回答:如何从命令行触发Xcode的“更新到最新程序包版本”? 目标:问题:

尝试xcodebuild -resolvePackageDependencies

,

xcodebuild -resolvePackageDependencies 似乎不能可靠地工作。它通常会顽固地拒绝更新到最新版本,尤其是当 SPM 依赖项指向分支而不是版本标记时。显然 Xcode 将这些信息缓存在某处,但我无法确定它是哪个文件。即使对派生数据中的 SourcePackages 文件夹进行核攻击也无济于事。

我发现可靠地执行此操作的唯一方法是核对 Xcode 项目的整个 DerivedData 子文件夹。

derived=$(xcodebuild -showBuildSettings | grep -m 1 BUILD_DIR | grep -oE "\/.*" | sed 's|/Build/Products||')
# The above will return a folder with a name like /Users/you/Library/Developer/Xcode/DerivedData/MyProject-ehdkocavaenextdcrsaszjdmyssx
rm -rf "$derived"
xcodebuild -resolvePackageDependencies

删除项目的 DerivedData 子文件夹是完全安全的。 Xcode 会根据需要简单地重新生成它。

,

我相信您正在寻找swift package update命令:

  

运行swift软件包更新会将所有依赖项更新为最新的   合格版本,并相应地更新Package.resolved文件。

请参阅Swift软件包管理器documentation

,

放弃此路线,因为理想情况下CI会测试回购中的 GOING ,而不是回购中的 IS

最终解决方案是指向一个虚拟分支,然后强制将CI生成的合并提交推送到该分支。

有点笨拙,但可以提供有关合并后如何使用该软件包的准确反馈。

更新: 能够找到一种更好的解决方案。 https://stackoverflow.com/a/61110638/2565025

本文链接:https://www.f2er.com/3142355.html

大家都在问