发布#
本节适用于发布 sktime
新版本的核心开发者。
核心开发者进行发布应为发布经理(由CC任命),并且对仓库有写入权限。
发布流程概述#
发布过程包括,按顺序:
发布周期管理
发布版本准备
pypi
上的发布conda
上的发布故障排除和事故补救(如适用)
详情如下。
发布周期流程#
sktime
的目标是每两周发布一次。
发布周期流程如下:
在发布日期前1周,更新发布板。
对于主要版本或重大功能,可以选择性地延长发布周期
在发布日期前一天进行功能冻结。此时只有发布管理员可以合并代码。
功能冻结应在核心开发者频道提前一周宣布,并在生效前一天再次宣布。任何延迟和功能冻结的延长也应宣布。
如果“必须有”的内容在计划发布日期前未合并:要么推迟发布日期并延长冻结期,要么降低优先级。
准备发布版本#
发布过程如下,概述如下:
确保弃用操作得到执行。
版本弃用操作应在代码中通过“版本号”注释进行标记。例如,对于0.12.0版本,在代码中搜索字符串0.12.0并执行描述的弃用操作。将弃用操作列表收集到一个问题中,因为它们需要包含在发布说明中。弃用操作应仅由发布管理员合并。
创建一个“发布”拉取请求(理想情况下从一个遵循命名模式
release/v0.x.y
的分支发起)。这应该更新版本号并包含完整的发布说明。
版本号和发布说明请见下方。
PR 和发布说明应由其他核心开发者进行最佳审查,然后在测试通过后合并。
创建一个遵循语法 v[MAJOR].[MINOR].[PATCH] 的新标签的 GitHub 草稿发布,例如,版本 0.12.0 的字符串
v0.12.0
。GitHub 发布说明应仅包含“新贡献者”和“所有贡献者”部分,其他内容则链接到变更日志中的发布说明,遵循当前 GitHub 发布说明的模式。
pypi
发布和发布验证#
发布 GitHub 草稿版本。创建新标签将触发
pypi
发布 CI/CD。等待
pypi
发布 CI/CD 完成。如果测试因偶发的无关失败而失败,请重新启动。
如果测试失败是真实的,那么上述步骤中出现了问题,需要调查、修复并重复。常见的可能性包括核心开发者不遵守功能冻结期,或者在发布PR和发布之间的一天左右时间内,依赖项发布了新版本。
一旦发布 CI/CD 通过,检查
pypi
上的sktime
版本,这应该是新版本。
应检查所有轮子是否已上传,这里。根据安装说明,应在新的
python
环境中进行sktime
的有效性安装(任意版本/操作系统)。如果安装不成功或轮子未上传,必须立即采取行动进行诊断和修复。所有核心开发者应通过slack上的核心开发者频道中的邮件通知紧急情况。在大多数情况下,需要更新安装说明。如果轮子上传失败,需要在第5步中删除并重新创建标签。可以使用本地仓库中的git
命令git push --delete origin tagname
删除标签。
conda
发布和发布验证#
如果
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 并请求审查
conda 发布 PR 需要被审核,并且依赖项应根据主 sktime 仓库中的任何更改进行检查。
如果依赖项(或Python版本支持)有变化,conda配方中的``meta.yml``文件需要更新以反映这些变化。
审核后,conda 发布 PR 应合并,这将自动触发 conda 包的发布。
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
仓库。