发布#

本节适用于发布 sktime 新版本的核心开发者。

核心开发者进行发布应为发布经理(由CC任命),并且对仓库有写入权限。

发布流程概述#

发布过程包括,按顺序:

  • 发布周期管理

  • 发布版本准备

  • pypi 上的发布

  • conda 上的发布

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

详情如下。

发布周期流程#

sktime 的目标是每两周发布一次。

发布周期流程如下:

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

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

  3. 在发布日期前一天进行功能冻结。此时只有发布管理员可以合并代码。

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

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

准备发布版本#

发布过程如下,概述如下:

  1. 确保弃用操作得到执行。

版本弃用操作应在代码中通过“版本号”注释进行标记。例如,对于0.12.0版本,在代码中搜索字符串0.12.0并执行描述的弃用操作。将弃用操作列表收集到一个问题中,因为它们需要包含在发布说明中。弃用操作应仅由发布管理员合并。

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

版本号和发布说明请见下方。

  1. PR 和发布说明应由其他核心开发者进行最佳审查,然后在测试通过后合并。

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

pypi 发布和发布验证#

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

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

如果测试失败是真实的,那么上述步骤中出现了问题,需要调查、修复并重复。常见的可能性包括核心开发者不遵守功能冻结期,或者在发布PR和发布之间的一天左右时间内,依赖项发布了新版本。

  1. 一旦发布 CI/CD 通过,检查 pypi 上的 sktime 版本,这应该是新版本。

应检查所有轮子是否已上传,这里。根据安装说明,应在新的 python 环境中进行 sktime 的有效性安装(任意版本/操作系统)。如果安装不成功或轮子未上传,必须立即采取行动进行诊断和修复。所有核心开发者应通过slack上的核心开发者频道中的邮件通知紧急情况。在大多数情况下,需要更新安装说明。如果轮子上传失败,需要在第5步中删除并重新创建标签。可以使用本地仓库中的 git 命令 git push --delete origin tagname 删除标签。

conda 发布和发布验证#

  1. 如果 pypi 上的发布成功,应该会自动创建一个发布 PR。

针对 sktime conda-forge 仓库:conda-forge/sktime-feedstock

备注

手动创建发布拉取请求 在发布PR未自动创建的情况下,可以手动创建并提交。有关维护conda feedstock包的一般指南,请参见 `conda-forge 包<https://conda-forge.org/docs/maintainer/updating_pkgs.html>`_

在分叉并克隆仓库后,编辑 meta.yml 文件并

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

  • 将源存档的 sha256 和从 github 粘贴到 source/sha256 部分

  • 提交 PR 并请求审查

  1. conda 发布 PR 需要被审核,并且依赖项应根据主 sktime 仓库中的任何更改进行检查。

如果依赖项(或Python版本支持)有变化,conda配方中的``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 发布周期中。

  • 核心接口变更(如果有)。这意味着对基类接口的更改。只有次要或主要版本才应该有向下不兼容的核心接口变更。

  • 增强功能,按模块/区域

  • 文档

  • 维护

  • bug修复

  • 所有贡献者荣誉

传统构建工具#

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

要运行旧版发布工作流程,例如,出于开发目的,请运行

make release

这将调用 build_tools/make_release.py ,它将引导您完成发布过程。

重要提示:在使用旧版构建工具时,确保不要意外地将发布标签推送到 sktime 仓库。