更新 Glean SDK¶
项目 FOG 使用发布为 glean
和 glean-core
crates 的 Glean SDK,位于 crates.io 上。
这两个 crates 的版本包含在 mozilla-central 的多个位置。要更新所有这些版本,您应该使用命令 mach update-glean <version, like "54.1.0">
。
这是一个半手动过程。请注意 mach update-glean
的输出以获取说明,并仔细遵循说明。
Rust 依赖项的版本不匹配¶
其他已引入的 crates 可能需要与 Glean SDK 所需的相同依赖项的不同版本。Rust 依赖项的一般策略是在树中保留一个依赖项的唯一版本(参见 bug 1591555 中的注释 #8)。在现实中这可能很难做到,因为某些依赖项可能需要进行调整才能正常工作。可以遵循以下策略来决定版本不匹配
如果版本仅 **在补丁版本方面有所不同**,Cargo 将保留引入的版本,除非某些其他依赖项固定了特定的补丁版本;假设它不会破坏 Glean SDK;如果确实如此,请按照后续步骤操作;
如果 **引入的依赖项的版本** 比 Glean SDK 所需的版本更新(更高的主版本或次版本),请 在 Glean SDK 组件中提交错误报告,让 Glean 要求使用相同的版本;
您将不得不放弃将 Glean SDK 更新到此版本。您需要等待 Glean SDK 更新其依赖项并发布新的 Glean SDK。然后,您需要更新到该新的 Glean SDK 版本。
如果 **引入的依赖项的版本** 更旧(较低的主版本或次版本),请考虑将引入的版本更新到较新的版本;寻求最初引入该依赖项的人员的审查;如果这不可行或会破坏 mozilla-central 构建,则考虑在树中保留两个版本;请注意,此选项可能仅适用于小型 crates,并且需要更新
TOLERATED_DUPES
列表,位于mach vendor
中(说明会在您操作过程中提供)。
保持版本同步¶
Glean SDK 和 glean_parser
目前作为单独的项目发布。但是,每个 Glean SDK 版本都需要特定的 glean_parser
版本。在更新其中一个或另一个时,请确保版本保持兼容。您可以在 Glean SDK 源码树中找到当前使用的 glean_parser
版本,例如在 sdk_generator.sh 中。
在大多数情况下,您应该在更新 SDK 之前先更新 glean_parser
。
主要版本更新的特殊注意事项¶
如果您要更新 Glean SDK 的主版本(例如从“32.x.y”更新到“33.z.a”),则需要采取特定的步骤。 application-services
存储库单独集成了 Glean SDK。它接受主版本内的任何版本,因此对于非主版本更新,它会愉快地遵循 mozilla-central
的引导。当进行主版本更新时,我们需要首先更新 application-services
,允许它生成一个新的(每日)版本,并确保 mozilla-central
在切换到新的 Glean SDK 版本的同时拾取该版本。
要更新 application-services
使用的 Glean SDK 版本
如果团队中其他人以前做过并且有时间,请考虑不要自己操作。 设置
application-services
的构建和测试环境 非常简单,但并非微不足道。您可能会发现向他们寻求帮助更容易。将 Glean SDK 的 git 子模块更新到最新版本的标签。例如:
cd components/external/glean
git checkout tags/v62.0.0
更新用于代码生成的
glean-build
crate 依赖项cargo update -p glean-build
更新 Gradle 的 Glean 依赖项版本以支持 Android
编辑
gradle/libs.versions.toml
以指定例如glean = "62.0.0"
更新 Xcode 的 Glean 依赖项版本以支持 iOS
编辑
megazords/ios-rust/MozillaTestServices/MozillaTestServices.xcodeproj/project.pbxproj
以指定例如minimumVersion = 62.0.0;
,用于glean-swift
包引用。Xcode 还有一个锁定文件。如果您没有 Xcode,或者只是不想运行它,请编辑
megazords/ios-rust/MozillaTestServices/MozillaTestServices.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
以指定新版本以及 mozilla/glean-swift 的新版本的 git SHA,例如"revision" : "5c614b4af5a1f1ffe23b46bd03696086d8ce9d0d",
和"version": "62.0.0"
运行
cargo test
以确保没有明显的错误。提交您的 PR 以供审查并合并。
使您的
mozilla-central
更改依赖于自动更新机器人创建的补丁,以将mozilla-central
更新到包含您的更改的新application-services
版本。如果您等待一天,就会发生这种情况。查找自动提交的错误报告(例如)。
如果您需要更快地操作,您可以要求
application-services
团队为您触发构建,然后自己编写补丁。
将整个堆栈推送到
try
以确保树能够协同工作。当一切正常后,将整个堆栈提供给 Lando 以进行合并。