跳转到: 导航, 搜索

OpenstackChefStablebranchCreateNotes

创建 stable/<release> 分支的步骤

太棒了!我们小组决定创建下一个稳定分支。以下是一些步骤,提醒您如何操作。

  1. 以核心成员身份访问 每个仓库,并使用您想要的 SHA 创建分支,通常您将直接从 master 分支创建。
  2. 为每个 cookbook 和仓库进行更改,创建一个 bug 来关联所有后续的分支工作
    1. 更新 .gitreview 以引用 defaultbranch=stable/<release>
    2. 更新 Berksfile 以引用 branch: 'stable/<release>'
    3. 请参阅 https://github.com/openstack/cookbook-openstack-identity/commit/3a99613b89fb28d21def8cbeaa63e40da32768f5 以获取示例
  3. 创建一个包含上述更改的 review,并将其提交到 stable/<release> 分支。
  4. 合并它,您就应该没问题了


如果您认为手动为所有 cookbook 执行此操作很麻烦,这些命令可能会帮助您自动化它(请在实际推送之前 CHECK git diff)

  1. 首先将所有 cookbook 拉取到一个文件夹中,然后尝试从根文件夹逐个运行这些命令(它们被故意分隔开,因为它们会创建一些您不想推送的更改)
  2. 检查您的 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 版本同步。

  1. 针对我们希望在此版本中使用的 gates 进行可能的基础设施更改
  2. 确定新的工具级别(ChefDK、rubocop、foodcritic),我们一直在努力推进这些工具
  3. 为每个 cookbook 和仓库进行更改。
    1. 使用新的版本级别更新 metadata
    2. 使用更新的 ChefDK 级别更新 common bootstrap
    3. 创建 rubocop TODO 文件,以概述需要完成的工作(rubocop --auto-gen-config 并将 "inherit_from: .rubocop_todo.yml" 添加到您的 .rubocop.yml 中)
    4. 使用旧 OpenStack 版本的引用更新代码(例如,"ocata" -> "pike"(Common release 和 yum 属性,...))
    5. 更新所有代码,查找现在可以删除的弃用信息
    6. 更新每个组件的任何已更改的软件包依赖项
    7. 更新所有 spec 测试平台,以达到我们希望在此版本中使用的目标级别


为了通过 gates,这些需要按以下顺序完成

  1. Common、Identity、Ops-Database 和 Ops-Messaging
  2. Image、BlockStorage、Network、Dashboard、Object-Storage
  3. Compute、Orchestration、Telemetry、Integration-Test
  4. 仓库


返回主页:https://wiki.openstack.org/wiki/Chef/GettingStarted