发布 IPython 的步骤#

注意

这完全复制自旧的 IPython wiki,目前正在开发中。本开发指南的许多信息已过时。

本文档包含有关发布 IPython 所用过程的注释。我们的发布过程目前不是很正式,可以改进。

大部分发布过程由我们主存储库 tools 目录中的 release 脚本自动完成。本文档仅作为发布经理的方便提醒。

0. 环境变量#

您可以设置一些环境变量来记录以前的发布标签和当前的发布里程碑、版本以及 git 标签

PREV_RELEASE=rel-1.0.0
MILESTONE=1.1
VERSION=1.1.0
TAG="rel-$VERSION"
BRANCH=master

如果您想复制/粘贴,这些变量将在以后使用,或者您可以在时机到来时直接输入适当的命令。这些变量不被脚本使用(因此没有 export)。

1. 完成发布说明#

  • 如果是主要版本

  • 将任何拉取请求说明合并到新功能中

    python tools/update_whatsnew.py
    
  • 更新 docs/source/whatsnew/development.rst,以确保其涵盖主要要点。

  • development.rst 的内容移动到 versionX.rst

  • 生成 GitHub 贡献摘要,可以使用以下方法完成

    python tools/github_stats.py --milestone $MILESTONE > stats.rst
    

这可能需要一些手动清理。添加清理后的结果并将其添加到 docs/source/whatsnew/github-stats-X.rst(根据是否为主要版本,创建新文件或将其添加到顶部)。您可以使用

git log --format="%aN <%aE>" $PREV_RELEASE... | sort -u -f

查找重复项并更新 .mailmap。在生成 GitHub 统计数据之前,请验证所有已关闭的问题和拉取请求 是否具有适当的里程碑此搜索 应返回无结果。

2. 运行 tools/build_release 脚本#

这会执行实际发布脚本将执行的所有文件检查和构建。这将允许您进行测试安装、检查构建过程是否正常运行等。您可能还需要对文档进行测试构建。

3. 创建并推送新标签#

编辑 IPython/core/release.py 以包含当前版本。

提交对 release.py 和 jsversion 的更改

git commit -am "release $VERSION"
git push origin $BRANCH

创建并推送标签

git tag -am "release $VERSION" "$TAG"
git push origin --tags

将 release.py 更新回 x.y-devx.y-maint,并推送

git commit -am "back to development"
git push origin $BRANCH

4. 获取用于构建发布的标签的全新克隆:#

cd /tmp
git clone --depth 1 https://github.com/ipython/ipython.git -b "$TAG"

5. 运行 release 脚本#

cd tools && ./release

这会生成 tarball、zipfile 和 wheels。它将它们发布到 archive.ipython.org 并向 PyPI 注册发布。

这将要求您拥有当前的 wheel、Python 3.4 和 Python 2.7。

7. 更新 IPython 网站#

  • 发布公告(新闻、公告)

  • 更新当前版本和下载链接

  • (如果是主要版本)更新文档页面上的链接

8. 起草简短的发布公告#

这应包括 i) 亮点和 ii) 文档中“新功能”部分的 HTML 版本链接。

发布到邮件列表,并从 Twitter 链接。

9. 更新 GitHub 上的里程碑#

  • 关闭您刚刚发布的里程碑

  • 如果尚不存在,则为 (x, y+1) 打开新的里程碑

10. 庆祝!#