跳转到: 导航, 搜索

ReleaseTeam/How To Release

Caution icon.svg {{{header}}}

{{{body}}}

您可以在 openstack-infra/release-tools 仓库中找到这里提到的所有工具。

开发里程碑发布

PROJECT=nova
MILESTONE=juno-3


发布前检查

缺失文件检查(针对参与里程碑发布的集成项目)

./repo_tarball_diff.sh $PROJECT master


里程碑标签/发布(星期二至星期四之间)

所有集成项目以及 oslo-incubator 和 oslo.messaging,需要在里程碑发布窗口期间遵循此流程。

注意:milestone.sh 脚本对 oslo-incubator(不发布 tarball)和 oslo.messaging(不推送标签且不发布 tarball)进行了特殊处理,因此您可以对它们运行相同的命令。


获取 PTL 批准(除 oslo.messaging 之外的所有项目)

  • PTL 确认标签的 SHA


推迟蓝图和错误

  • 将所有未完成的蓝图移动到下一个里程碑($MILESTONE 都应为“已实现”)
  • 将所有未完成的错误移动到下一个里程碑($MILESTONE 都应为“已修复提交”)。您可以使用以下脚本
./process_bugs.py $PROJECT --milestone $MILESTONE --settarget $NEXTMILESTONE


标记,等待 tarball 构建,处理已修复提交的错误,检查相似性并上传(如果适用)

./milestone.sh $MILESTONE $SHA $PROJECT


注意:对于 oslo.messaging,$SHA 不用于标记,因此会被忽略。


当所有项目完成时

宣布里程碑

  • 发送邮件至 openstack general ML
  • Twitter


Swift 中间发布

PROJECT=swift
MILESTONE=1.8.1


发布前检查

缺失文件检查

./repo_tarball_diff.sh swift master


检查错误

  • 查看已修复提交的错误列表,确认它们是否在此期间得到修复


RC1 标签

获取 PTL 批准

  • 从 PTL 获取 RC1 $RCSHA
  • 检查 $MILESTONE changelog 是否已提交到 master


推迟蓝图

  • 将所有未完成的蓝图移动到下一个里程碑($MILESTONE 都应为“已实现”)
  • 将所有未完成的错误移动到下一个里程碑($MILESTONE 都应为“已修复提交”)


标记 RC1,等待 tarball 构建并处理已修复提交的错误

./swiftrc.sh $RC1SHA $MILESTONE


宣布候选构建

  • 发送邮件至 openstack general ML
  • Twitter


后续 RC

我们通常希望 Swift 的中间发布不会生成多个 RC,但有时会发生意外情况。在这种情况下,我们遵循手动流程。


设置 proposed/$MILESTONE 分支

  • 转到 review.openstack.org 并使用与 RC1 标签相同的 SHA 创建 proposed/$MILESTONE 分支
  • 将修复移植到此分支


手动推送新的标签到该分支

git checkout master && git pull
git checkout -b proposed/$MILESTONE -t origin/proposed/$MILESTONE
git tag -m "Swift $MILESTONE-rc2" -s "${MILESTONE}rc2" $RC2SHA
git push gerrit ${MILESTONE}rc2


发布

获取 PTL 批准

  • 确认 SHA=RCxSHA


标记,等待 tarball 构建,检查相似性并上传

./milestone.sh $MILESTONE $SHA swift


宣布发布

  • 发送邮件至 openstack general ML & openstack announce。
  • Twitter
  • 如果创建了 proposed/$MILESTONE 分支,请检查标签是否已合并回 master 并删除该分支(在 review.openstack.org 上手动操作)


最终发布

注意:rccut.sh 和 rcdelivery.sh 脚本对 swift(RC 里程碑命名不同)和 oslo-incubator(不发布 tarball)进行了特殊处理,因此您可以对它们运行相同的命令。它们处理 oslo.* 库,其中标记是外部的:必须直接关闭错误并手动创建稳定分支。

PROJECT=nova
SERIES=icehouse
FINALSWIFT=2.0.0
NEXTSERIES=juno


发布前检查

创建下一个系列

  • 在 Launchpad 中创建 $NEXTSERIES 系列
  • 将状态设置为 Future,设置发布经理


检查 RC1 的短名称是否为“RC1”

  • $NAME-rc1 的短里程碑名称应为“RC1”


缺失文件检查

./repo_tarball_diff.sh $PROJECT master


检查错误

  • 查看已修复提交的错误列表,确认它们是否在此期间得到修复


检查翻译/需求更新

  • 分支应具有相对较新的翻译更新
  • 分支应具有相对较新的需求更新


切割 stable/$SERIES 分支(将 master 切换到下一个版本)

获取 PTL 批准

  • 这应在 RC1 切割附近完成
  • 对于 Swift,检查 $FINALSWIFT changelog 是否已提交到 master


将新版本推送到 master

  • 准备更改,在 setup.cfg 中设置 master 分支上的下一个版本(Swift 除外,Swift 不设置预发布版本)
  • 获得核心的批准并确保其已合并
  • 记下 SHA = stable/$SERIES 切割提交 ID(版本号之前的提交)


从上一个提交创建 stable/$SERIES 分支,等待 tarball,处理已修复提交的错误

./rccut.sh $SHA $SERIES $PROJECT [$FINALSWIFT]


将 $NEXTSERIES 设置为活动开发

  • 将 $NEXTSERIES 设置为 $PROJECT 的“开发重点”
  • 将 $NEXTSERIES 状态设置为“活动开发”
  • 将 $SERIES 状态设置为“预发布冻结”


RC1 切割

获取 PTL 批准

  • 检查分支内容是否已准备好从 PTL 的角度出发(移植任何最后一刻的错误修复)


标记,等待 tarball,检查相似性并上传

./rcdelivery.sh $SERIES rc1 $PROJECT [$FINALSWIFT]


宣布 RC1

  • 发送邮件至 openstack general ML
  • Twitter


取消冻结需求

  • (应仔细检查,因为我们在这里进行了更改)
  • 为 openstack/requirements 创建 stable/$SERIES
  • 考虑 master 分支解冻
  • 发送邮件至 openstack dev ML


后续 RC-X 窗口

决定打开下一个 RC 窗口

  • 考虑 $SERIES-rc-potential 错误并与 PTL 讨论它们是否值得重新旋转


创建 RC-X 里程碑页面

  • 在 Launchpad 上创建 RC-X 里程碑页面(短名称 = RCX)
  • 定位相关错误


完善/修复错误

  • 跟踪错误修复
  • 促进移植


检查翻译/需求更新

  • 分支应具有相对较新的翻译更新。这需要运行手动脚本。
  • 如果存在,则应合并需求作业(在创建 stable/* 时自动建议)


获取 PTL 批准

  • 从 PTL 的角度确认 RC 可发布


标记,等待 tarball,检查相似性并上传

./rcdelivery.sh $SERIES rcX $PROJECT [$FINALSWIFT]


宣布 RC-X

  • 发送邮件至 openstack general ML
  • Twitter


最终发布

创建最终发布里程碑页面

  • 在 Launchpad 上创建 $VERSION 最终里程碑页面


将所有错误和蓝图推送到最终页面

./consolidate_release_page.py $PROJECT $SERIES $VERSION

这可能需要很长时间。对于大型错误,您需要多次运行它。验证所有中间里程碑页面现在都为空。


标记,等待 tarball,检查相似性并上传

./rcdelivery.sh $SERIES final $PROJECT [$FINALSWIFT]


额外的相似性检查

./similar_tarballs.sh $PROJECT $VERSION.rcX $VERSION


将发布说明链接添加到发布页面


宣布发布

  • openstack-announce, openstack general ML
  • Twitter 等。


发布后

更新 wiki 页面


创建 openstack/openstack 稳定分支

  • 这需要在创建任何稳定分支之前完成
  • 转到 review.openstack.org openstack/openstack 分支管理面板
  • 新分支:“stable/$SERIES”,初始修订版:“HEAD”
  • 推送更新到 .gitmodules,将所有“.” 切换到“stable/$SERIES”


切换开发重点

  • 将 $SERIES 切换到当前稳定版本,将发布经理设置为 openstack-stable-maint
  • 将上一个稳定版本(系列 - 1)设置为“已过时”


清理 rc-potential 标签


启用 stable/$SERIES


将 .1 版本推送到 stable/$SERIES 分支

git checkout -t -b stable/$SERIES origin/stable/$SERIES
git checkout -b stable-$SERIES
vi setup.cfg # set to $VERSION.1
vi .gitreview # set defaultbranch=stable/$SERIES
git commit -a
git review stable/$SERIES

注意:对于 Swift,仍然有意义地提交 defaultbranch 补丁(即使您不执行 setup.cfg 版本号增加)