XGBoost 发布策略

版本控制策略

从 XGBoost 1.0.0 开始,每个 XGBoost 版本都将以 [MAJOR].[FEATURE].[MAINTENANCE] 的形式进行版本控制

  • MAJOR(主版本):我们保证在相同主版本号的发布版本之间保持 API 兼容性。我们预计一个新的 MAJOR 发布版本将有 1 年以上的开发周期。

  • FEATURE(功能版本):我们通过功能版本发布新功能、改进和错误修复。功能版本的周期长度由功能路线图的大小决定。路线图在前一个版本发布后立即确定。

  • MAINTENANCE(维护版本):维护版本只包含错误修复。此类发布只在发现严重的正确性或性能错误,并且用户升级到新版本的 XGBoost 存在障碍时发生。

发布流程

  1. 为发布创建议题,注明预计日期和预期的功能或主要修复,并置顶该议题。

  2. 如果这是一个主版本发布,则创建一个发布分支。提升发布版本号。有一个辅助脚本 ops/script/change_version.py

  3. 提交更改,在 GitHub 上发布分支上创建一个 PR。将提升的版本号移植到默认分支,可选地带上后缀 SNAPSHOT

  4. 在 GitHub 或本地的发布分支上创建标签。

  5. 在 GitHub 标签页面上发布,如果标签是在 GitHub 上创建的,则可能与上一步同时完成。

  6. 提交 pip、R-universe、CRAN 和 Maven 包。

    xgboost/dev/ 中有用于自动化此过程的辅助脚本。

R-universe 包

自 XGBoost 3.0.0 起,我们将 R 包托管在 R-Universe 上。要发布新版本,请更改 dmlc.r-universe.dev 中的 packages.json,使用新的发布分支。

R CRAN 包

在提交发布之前,应该首先在 R-hubwin-builder 上测试包。请注意,R-hub Windows 实例的环境与 win-builder 上托管的环境不完全相同。

根据 CRAN 策略

如果运行一个包使用多个线程/核心,它绝不能同时使用超过两个:检查农场是一个共享资源,通常会同时运行许多检查。

我们需要检查示例中使用的 CPU 数量。在运行 R CMD check --as-cran [1] 之前导出 _R_CHECK_EXAMPLE_TIMING_CPU_TO_ELAPSED_THRESHOLD_=2.5,并确保您使用的机器有足够的 CPU 核心来揭示任何潜在的策略违规。

Read The Docs

我们可能需要手动激活 read the docs 的新发布分支,并在控制台中将其设置为默认分支 [2]。请检查文档构建,并确保在发布新版本后激活并选择了正确的分支。

参考文献

[1] https://stat.ethz.ch/pipermail/r-package-devel/2022q4/008610.html

[2] https://github.com/readthedocs/readthedocs.org/issues/12073