发布 Jupyter 项目的基本模板#

Jupyter 由一堆小项目和一些较大的项目组成。这里概述了发布一个小项目的基本流程,这也应适用于较大的项目,尽管它们可能有一些额外的步骤。

里程碑#

大多数 Jupyter 项目使用 GitHub 里程碑系统来标记发布中的问题和拉取请求。每个发布都应该有一个关联的里程碑。准备发布的第一个步骤是确保每个问题和拉取请求都有正确的里程碑。

  1. 浏览当前里程碑标记的所有 开放 问题和拉取请求。如果有任何未解决的,需要将其解决或推迟到下一个里程碑。推迟问题是正常的 - 它们通常标记为最早可行的里程碑,但许多这样乐观标记的任务在发布时并未完成。总会有下一次机会!

  2. 使用里程碑过滤器“没有里程碑的问题”检查 已关闭 的问题和拉取请求。不应该有任何没有里程碑的已关闭问题或拉取请求。如果你发现任何此类情况,请根据情况将其标记为当前里程碑或“无操作”。

当一个发布版本没有未解决的问题或拉取请求时,它可能已经准备好发布了。

发行说明#

一旦所有的问题和拉取请求都处理完毕,就该制作发布说明。较小的项目通常在文档目录中有一个 changelog.rst 文件,你可以在其中为新版本添加一个部分。浏览当前里程碑合并的拉取请求(这就是我们使用里程碑的原因),并撰写本次发布中更改的亮点摘要。通常应该有一个指向里程碑本身的链接以获取更多详细信息。

通过这些笔记提交一个拉取请求。最好在审核这个PR时@willingc。确保用你的发布里程碑标记这个PR!

发布版本#

既然你的变更日志已经合并,我们就可以实际构建并发布版本了。我们假设 V 已被声明为一个包含发布版本的 shell 变量:

export V=5.1.2

首先确保你有一个干净的 master 分支检出,没有额外的文件:

git pull
git clean -xfd

首先,更新包的版本,通常在文件 <pkg>/_version.py 或类似文件中。

提交该更改:

git commit -am "release $V"

备注

在这一点上,我喜欢运行测试,只是为了确保设置版本没有让任何事情变得混乱。

构建发行版:

python setup.py sdist --formats=gztar
python setup.py bdist_wheel

标记提交:

git tag -am "release $V" $V

最后,使用 twine 将所有内容发布到 github 和 PyPI:

twine upload dist/*
git push origin
git push origin --tags

我们有一个版本发布!你现在可以通过再次编辑 <pkg>/_version.py (或类似文件)来将版本号提升到下一个 '.dev' 版本,并提交:

git commit -am "back to dev"
git push origin

备注

这些推送假设 origin 指向主 jupyter/ipython 仓库。根据你使用 git 的方式,这可能是 upstream 或其他名称。