ReleaseTeam/How To Release
您可以在 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
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
后续 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。
- 如果创建了 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
取消冻结需求
- (应仔细检查,因为我们在这里进行了更改)
- 为 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
最终发布
创建最终发布里程碑页面
- 在 Launchpad 上创建 $VERSION 最终里程碑页面
将所有错误和蓝图推送到最终页面
./consolidate_release_page.py $PROJECT $SERIES $VERSION
这可能需要很长时间。对于大型错误,您需要多次运行它。验证所有中间里程碑页面现在都为空。
标记,等待 tarball,检查相似性并上传
./rcdelivery.sh $SERIES final $PROJECT [$FINALSWIFT]
额外的相似性检查
./similar_tarballs.sh $PROJECT $VERSION.rcX $VERSION
将发布说明链接添加到发布页面
- 将“参见 https://wiki.openstack.org/ReleaseNotes/$SERIES”注释添加到下载页面上的发布说明中。
宣布发布
- 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
- (应仔细检查,因为我们在这里进行了更改)
- 添加 stable/$SERIES 定期作业,例如 Icehouse https://review.openstack.org/115933
将 .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 版本号增加)