OpenstackChefStablebranchCreateNotes
创建 stable/<release> 分支的步骤
太棒了!我们小组决定创建下一个稳定分支。以下是一些步骤,提醒您如何操作。
- 以核心成员身份访问 每个仓库,并使用您想要的 SHA 创建分支,通常您将直接从 master 分支创建。
- 为每个 cookbook 和仓库进行更改,创建一个 bug 来关联所有后续的分支工作
- 更新 .gitreview 以引用 defaultbranch=stable/<release>
- 更新 Berksfile 以引用 branch: 'stable/<release>'
- 请参阅 https://github.com/openstack/cookbook-openstack-identity/commit/3a99613b89fb28d21def8cbeaa63e40da32768f5 以获取示例
- 创建一个包含上述更改的 review,并将其提交到 stable/<release> 分支。
- 合并它,您就应该没问题了
如果您认为手动为所有 cookbook 执行此操作很麻烦,这些命令可能会帮助您自动化它(请在实际推送之前 CHECK git diff)
- 首先将所有 cookbook 拉取到一个文件夹中,然后尝试从根文件夹逐个运行这些命令(它们被故意分隔开,因为它们会创建一些您不想推送的更改)
- 检查您的 sed 版本,并确保您至少有 v 4.2.1(如果您在 OS X 上,您需要通过 Homebrew 安装 gnu-sed,因为安装的那个以神秘的方式工作)
for i in $(ls | grep cookbook); do cd $i git checkout stable/<release> sed -i '/opendev/a\ \ branch: stable\/<release>' Berksfile sed -i 's/opendev.*$/&,/' Berksfile echo 'defaultbranch=stable/rocky' >> .gitreview berks install sed -i '/Berksfile\.lock/d' .gitignore git add Berksfile.lock cd .. done # the next one is important, since there are changes that are wrong and should # be corrected manually (like adding the branch: stable/liberty for a non # openstack cookbook) for i in $(ls | grep cookbook); do cd $i; git diff; cd .. ; done # after you checked all your changes, you can go ahead, commit it and push it # up for review for i in $(ls | grep cookbook); do cd $i git commit -am 'stable/<release> release patch' git review cd .. done
新 master 分支的步骤
现在我们有一个新的 master,需要使其与匹配的基础 OpenStack 版本同步。
- 针对我们希望在此版本中使用的 gates 进行可能的基础设施更改
- 确定新的工具级别(ChefDK、rubocop、foodcritic),我们一直在努力推进这些工具
- 为每个 cookbook 和仓库进行更改。
- 使用新的版本级别更新 metadata
- 使用更新的 ChefDK 级别更新 common bootstrap
- 创建 rubocop TODO 文件,以概述需要完成的工作(rubocop --auto-gen-config 并将 "inherit_from: .rubocop_todo.yml" 添加到您的 .rubocop.yml 中)
- 使用旧 OpenStack 版本的引用更新代码(例如,"ocata" -> "pike"(Common release 和 yum 属性,...))
- 更新所有代码,查找现在可以删除的弃用信息
- 更新每个组件的任何已更改的软件包依赖项
- 更新所有 spec 测试平台,以达到我们希望在此版本中使用的目标级别
为了通过 gates,这些需要按以下顺序完成
- Common、Identity、Ops-Database 和 Ops-Messaging
- Image、BlockStorage、Network、Dashboard、Object-Storage
- Compute、Orchestration、Telemetry、Integration-Test
- 仓库