发布指南

本指南记录了 dask-image 的发布流程。它基于 Kira Evans 创建的 napari 发布指南。

本指南主要面向 dask-image 的核心开发者。他们需要拥有一个对 dask-image 包具有上传权限的 PyPI 账户。他们还需要有权限合并 dask-image 的 conda-forge feedstock 仓库中的拉取请求:https://github.com/conda-forge/dask-image-feedstock

您还需要以下额外的发布依赖项来完成发布流程

pip install "PyGithub>=1.44.1" "twine>=3.1.1" tqdm

将 PyPI 密码设置为 GitHub secret

dask/dask-image 仓库必须将 PyPI API token 作为 GitHub secret。

这很可能已经完成,但如果还没有,请按照本指南获取一个 token,并按照另一份指南将其添加为 secret。

确定新的版本号

我们对 dask-image 使用日历版本控制 (CalVer)。这意味着版本号格式为 YYYY.MM.X。其中,YYYY 表示年份,MM 表示月份,X 是一个从零开始的整数计数器(用于区分同一月份进行多次发布的情况)。

setuptools-scm 根据以 v 开头的最新 git 标签确定确切的版本。因此,我们的 git 标签格式将是 vYYYY.MM.X

例如,git 标签“v2030.01.0”将是 2030 年 1 月进行的首次发布。

生成发布说明

发布说明包含合并列表、贡献者和评审者。

  1. 在您的计算机上创建一个 GH_TOKEN 环境变量。

    在 Linux/Mac 上

    export GH_TOKEN=<your-gh-api-token>
    

    在 Windows 上

    set GH_TOKEN <your-gh-api-token>
    

    如果您还没有个人 GitHub API token,可以从您的 GitHub 账户的开发者设置中创建一个:https://github.com/settings/tokens

2. 运行 python 脚本生成发布说明,包括自上次标记发布以来的所有更改。

注意:必须安装 PyGithub 包才能运行此脚本(https://github.com/PyGithub/PyGithub

像这样调用脚本

python docs/release/generate_release_notes.py  <last-version-tag> main --version <new-version-number>

示例

python docs/release/generate_release_notes.py  v2021.05.24 main --version 2021.06.03

使用以下命令查看此脚本的帮助

python docs/release/generate_release_notes.py -h
  1. 扫描 PR 标题,查找亮点、弃用、API 更改和错误修复,并在说明的相关部分提及这些内容。尝试通过提及受影响的函数,详细阐述更改及其后果来以表达力强的方式呈现信息。如果可能,将语义上相近的 PRs 分组。

  2. 将您编辑好的发布说明复制到文件 HISTORY.rst 中。

  3. 在继续下一步之前,创建一个并合并包含发布说明的 PR。

创建发布候选版本

前往 dask-image 发布页面:https://github.com/dask/dask-image/releases

点击“Draft Release”按钮创建一个新的发布候选版本。

  • 标签版本和发布标题的格式都应为 vYYYY.MM.Xrc1

  • 将本次发布的 HISTORY.rst 中的发布说明复制粘贴到描述文本框中。

  • 勾选“Set as a pre-release”(设置为预发布版本)

注意,这里我们使用 rc 表示发布候选版本,以便在正式发布前创建一个可供测试的版本。

创建发布版本将触发一个 GitHub Actions 脚本,该脚本会自动将发布版本上传到 PyPI。

测试发布候选版本

发布候选版本可以使用以下命令进行测试

pip install --pre dask-image

建议在虚拟环境中测试发布候选版本,以隔离依赖项。

如果发布的候选版本不是您想要的,请进行更改,并从头开始重复此过程,但在 rc 后增加数字(例如 vYYYY.MM.Xrc1)。

一旦您对发布的候选版本感到满意,就可以生成正式发布版本了。

生成正式发布版本

要生成正式发布版本,现在您将重复上述过程,但这次 - 从版本号中删除 rc 后缀。 - 勾选“Set as the latest release”(设置为最新发布版本)

这将自动将发布版本上传到 PyPI,同时也将自动开始在 conda-forge 上发布新版本的过程。

在 conda-forge 上发布

conda-forge 机器人 regro-cf-autotick-bot 通常需要大约一小时左右的时间才能发现 PyPI 上有新版本可用,并在 dask-image 的 conda-forge feedstock 中打开一个拉取请求:https://github.com/conda-forge/dask-image-feedstock

注意:conda-forge 机器人不会为任何发布候选版本打开 PR,只为最终发布版本打开。只会为最终发布打开一个 PR。

作为等待 conda-forge 机器人注意到新版本的替代方案,您可以在 dask-image feedstock 中提交一个新的 issue,并在 issue 标题中注明 @conda-forge-admin, please update version。这将触发 <https://forge.conda.org.cn/docs/maintainer/infrastructure.html#conda-forge-admin-please-update-version>`_ 机器人检查新版本。

在合并拉取请求之前,您首先应该检查

  • 此拉取请求在 CI 上的所有测试均已通过

  • 是否有任何依赖项发生了更改,并且应该通过将更改提交到 recipe/meta.yaml 来更新到该拉取请求中

一旦一切正常,您可以合并拉取请求,最新版本的 dask-image 将自动在 conda-forge 上可用。我们就完成了!