跳转到: 导航, 搜索

Oslo/ReleaseProcess

Oslo 库发布流程

版本号

有关选择版本号的指南,请参阅 Oslo/VersioningPolicy

发布后跟踪

由于 Oslo 库往往比集成项目更频繁地生成发布版本,因此我们使用“发布后”跟踪,而不是主要里程碑预测跟踪。发布系列以当前开发周期的代码名称命名,全部使用小写字母。每个库还应在系列中有一个开放的“next-$series”里程碑。积极的工作放置在里程碑中,并在发布过程中重命名里程碑,以表明完成的工作是在给定的发布版本中完成的。

例如,oslo.log 有一个“kilo”系列和一个“next-kilo”里程碑。蓝图和错误添加到“next-kilo”,工作开始时。当 oslo.log 的 0.1.0 版本被标记时,“next-kilo”里程碑将被重命名为“0.1.0”,并创建一个新的“next-kilo”里程碑。任何未作为 0.1.0 版本的一部分完成的蓝图或错误将被移动到新的里程碑,并继续工作。

oslo-incubator 使用主要里程碑跟踪(“kilo-1”、“kilo-2”等),因为它在技术上未发布,并且我们使用 oslo-incubator 项目用于与单个库无关的蓝图和规范。

安装发布工具

发布管理团队创建了一些工具来帮助管理我们的发布。要安装这些工具,请检出 openstack-infra/release-tools git 仓库的副本,创建一个 virtualenv,并安装依赖项

$ git clone git://git.openstack.org/openstack-infra/release-tools
$ cd release-tools
$ virtualenv .venv
$ source .venv/bin/activate
$ pip install -r requirements.txt --allow-external lazr.authentication --allow-unverified lazr.authentication

设置 GPG

OpenStack 发布依赖于 git 仓库中的 GPG 签名标签。您需要在将要标记发布版本的系统上配置 GPG 密钥。 建立信任网络,最好让其他社区成员签署您的密钥。通常在峰会和周期中期会议上会有面对面的会议来处理密钥签名。

如果您的默认 Git 提交电子邮件地址未包含在您的 gpg 密钥中,您需要添加它才能继续(或更改您的默认 git 提交地址)。这可以使用以下步骤完成,基于 此博客文章 中的说明,并且不会使您的密钥失效

  1. $ gpg --edit-key your.email@your-domain.com
  2. 在 gpg 命令行中,键入“adduid”
  3. 提示时,输入您的真实姓名和地址。这些必须与您的 git 提交设置匹配。
  4. 将注释字段留空(这与博客文章中的说明不同)。
  5. 如果一切看起来都正确,请按“o”
  6. 回到 gpg 命令行,按与您新添加的 uid 关联的数字。
  7. 输入“trust”
  8. 按 5 以完全信任自己
  9. 在 gpg 提示符处键入“quit”,并在它询问您是否要保存更改时回答“y”。

设置 Launchpad

发布工具连接到 launchpad,这需要 oauth 授权。设置此通常需要一个网络浏览器,并且一些用户在使用控制台浏览器(如 lynx)时遇到问题。因此,您可能希望在您的本地系统上运行发布脚本,该系统可以使用常规 GUI 浏览器,而不是在只能通过终端访问的远程服务器上运行。

您需要成为 oslo-drivers 团队的成员才能有权创建和编辑里程碑。如果您未在 https://launchpad.net/~oslo-drivers 的成员列表中,请让其他成员添加您。

设置 Gerrit 权限

在发布工具检出指定的代码仓库并创建签名标签后,它会将标签推送到 gerrit。您需要特殊权限才能将标签推送到 gerrit,因此请确保您是您尝试发布的项目的发布团队成员。同一 gerrit 发布团队的另一名成员或 infra 团队可以帮助您设置此权限。

发布库

使用 release_library.sh 脚本标记发布版本并更新 launchpad。

$ ./release_library.sh
Usage: ./release_library.sh series version SHA project
Example: ./release_library.sh juno 1.0.0 HEAD oslo.rootwrap

第一次运行此脚本时,它将打开一个浏览器窗口,Launchpad 会询问您要授予应用程序哪些权限。最简单的选择是允许所有权限。

在仓库被标记后,发布工具会更新项目的已关闭的所有错误,确保它们位于 next-$series 里程碑中。然后,它会将该里程碑重命名为您指定的版本号,从而使发布说明和跟踪更容易。

此时,脚本会打印出类似“Fix any leftover bugs manually and press key to continue...”的消息。在此处停止并查看 Launchpad。

这是您修复任何需要标记为“Fix Released”但 API 超时(当太多项目与同一错误关联时,这种情况经常发生)的错误的机会。这也是您在当前里程碑关闭之前将任何未关闭的错误移动到不同里程碑的机会。

首先,通过单击系列页面上的“Create milestone”链接创建一个新的 next-$series 里程碑。

接下来,如果版本里程碑中存在任何未完成的蓝图或错误,请将它们移动到 next-$series。

最后,如果版本里程碑中存在任何已完成但未标记为“Fix Released”的错误,请更新它们的状态。如果出现超时错误,您可能需要尝试多次。

只有完成此操作后,才能返回终端并按 return 键继续该过程。此时,脚本会关闭旧里程碑,因此不能再向其添加任何项目。

发送发布说明

我们直接从 git 日志生成库发布说明,因此请刷新您的本地 sandbox

 $ git pull

发布说明脚本位于 oslo-incubator/tools 中

 $ ./tools/release_notes.py ../$libdir $prevrel $relnum

将输出通过电子邮件发送到 openstack-dev 邮件列表。