版本发布#

本节面向发布新版本 sktime 的核心开发者。

负责发布的核心开发者应为版本发布经理(由核心委员会任命),并拥有仓库的写入权限。

版本发布流程摘要#

版本发布流程按顺序包括:

  • 版本发布周期管理

  • 版本准备

  • pypi 上发布

  • conda 上发布

  • 故障排除和事故补救(如适用)

详情如下。

版本发布周期流程#

sktime 目标是每两周发布一个版本。

版本发布周期流程如下:

  1. 发布日期前 1 周,更新发布看板。

  2. 对于主要版本或重要功能,可以选择延长发布周期

  3. 发布日期前 1 天功能冻结。此时只有版本发布经理可以合并。

应提前 1 周在核心开发者频道中宣布功能冻结,并在冻结生效前 1 天再次宣布。任何功能冻结的延迟或延长也应宣布。

  1. 如果“必须有”的功能未在计划发布日期前合并:要么推迟发布日期并延长冻结期,要么降低优先级。

准备发布版本#

版本发布流程概述如下:

  1. 确保已执行废弃操作。

某个版本的废弃操作应在代码中通过标注有“版本号”的注释进行标记。例如,对于 0.12.0 版本,在代码中搜索字符串 0.12.0 并执行描述的废弃操作。建议将废弃操作列表收集在一个或多个独立的 PR 中,因为它们需要包含在发布说明中。废弃操作只能由版本发布经理合并。

  1. 创建一个“发布”拉取请求(理想情况下应从遵循 release/v0.x.y 命名模式的分支创建)。这应该修改版本号并包含完整的发布说明。

有关版本号和发布说明,请参见下文。

  1. PR 和发布说明最好由其他核心开发者审阅,并在测试通过后合并。

  2. 创建一个 GitHub 草稿发布,使用遵循 v[MAJOR].[MINOR].[PATCH] 语法的标签,例如,版本 0.12.0 的字符串 v0.12.0。GitHub 发布说明应仅包含“新贡献者”和“所有贡献者”部分,其余内容应链接到更新日志中的发布说明,遵循当前 GitHub 发布说明的模式。

pypi 发布和发布验证#

  1. 发布 GitHub 草稿发布。新标签的创建将触发 pypi 发布 CI/CD。

  2. 等待 pypi 发布 CI/CD 完成。如果测试因偶发性无关故障而失败,请重新启动。

如果测试真正失败,说明上述步骤出了问题,请调查、修复并重复。常见原因可能是核心开发者未遵守功能冻结期,或者在发布 PR 和实际发布之间约一天的时间内,依赖项有了新版本。

  1. 发布 CI/CD 通过后,检查 pypi 上的 sktime 版本,应为新版本。

应该检查所有 wheel 包是否已上传,在 pypi 上,此处。应根据安装说明在新的 python 环境中进行一次验证性安装 sktime(任意一个版本/操作系统)。如果安装不成功或 wheel 包未上传,必须立即采取行动诊断和补救。应立即通过核心开发者频道中的群发邮件通知所有核心开发者此情况。最常见的情况是需要更新安装说明。如果 wheel 包上传失败,则需要删除并重新创建第 5 步中的标签。标签可以使用本地仓库中的 git 命令 git push --delete origin tagname 删除。

conda 发布和发布验证#

8. 如果 pypi 上的发布成功,应该会自动创建一个针对 sktime conda-forge 仓库的发布 PR:conda-forge/sktime-feedstock

注意

手动创建发布拉取请求

如果 conda-forge 发布 PR 未自动创建,可以手动创建并提交。有关维护 conda feedstcok 包的一般指南,请参阅 `conda-forge 包<https://forge.conda.org.cn/docs/maintainer/updating_pkgs.html>`_

在 fork 并克隆仓库后,编辑 meta.yml 文件,然后:

  • 增加包含 {% set version = "0.X.Y" %} 的行中的版本号

  • 将来自 GitHub 的源归档文件的 sha256 sum 粘贴到 source/sha256 部分

  • 提交 PR 并请求审阅

  1. Conda 发布 PR 需要审阅,并且应根据主 sktime 仓库中的任何更改来检查依赖项。

如果依赖项(或 python 版本支持)发生了变化,需要更新 conda recipe 中的 meta.yml 文件以反映这些变化。

  1. 审阅通过后,应合并 conda 发布 PR,这将自动触发 conda 包的发布。

  2. 1 小时后,应检查包是否已在 conda 上发布。

包在 conda 上可用后,应进行测试安装以验证发布。如果其中任何一步失败,应采取与第 7 点相同的紧急行动。

版本号位置#

版本号需要在以下位置更新:

  • 根目录下的 __init__.py

  • README.md

  • pyproject.toml

发布说明#

发布说明可以使用 build_tools.changelog.py 脚本生成,并应放置在 changelog.rst 的顶部。一般来说,发布说明应遵循之前发布说明的通用模式,包含以下部分:

  • 亮点

  • 依赖项变更(如有)

  • 废弃和移除(如有)。在 PATCH 版本中,不进行废弃操作,但可能新增废弃。废弃操作通常在 MINOR 发布周期中进行。

  • 核心接口变更(如有)。这意味着对基类接口的更改。只有 MINOR 或 MAJOR 版本才应包含不向下兼容的核心接口变更。

  • 增强功能(按模块/领域)

  • 文档

  • 维护

  • 错误修复

  • 所有贡献者鸣谢

遗留构建工具#

我们不再使用基于 make 文件的遗留构建工具。

要运行遗留发布工作流程(例如,出于开发目的),请运行:

make release

这会调用 build_tools/make_release.py 脚本,该脚本将指导你完成发布流程。

重要提示:运行遗留构建工具时,请确保不要意外地将发布标签推送到 sktime 仓库。