注意

本文档适用于 Ceph 的开发版本。

发布清单

开发启动

这些步骤应在新主要版本开始时执行,即在上一个版本打上标签(vX.2.0)并将该标签合并回 master 之后。

X 是我们刚开始开发的新版本。X-1 是刚刚发布的版本 (X-1).2.0。

版本和标签

  • [x] 更新 CMakeLists.txt VERSION (顶部改为 X.0.0)

  • [x] 更新 src/librbd/CMakeLists.txt VERSION (底部 librbd 目标改为 1.X.0)

  • [x] 使用新的发布名称、编号和类型 ('dev') 更新 src/ceph_release

  • [x] 初始标签 vX.0.0,以便我们可以区分(并排序在)回溯的 (X-1).2.Z 版本之后。

注意

  • 标签必须带有注释,因为 CMake 通过调用 git describe --always 来确定 CEPH_GIT_NICE_VER

  • vX.0.0 是特殊的标签,它们是手动推送的(不像 vX.1.Z 和 vX.2.Z 由 Jenkins 处理)。

  • vX.0.0 应该指向 kickoff 分支中的第一个提交之前的提交。

定义发布名称和常量

确保 X(理想情况下还有 X+1)已定义

  • [x] src/common/ceph_releases.h (ceph_release_t)

  • [x] src/common/ceph_strings.cc (ceph_release_name())

  • [x] src/include/rados.h (CEPH_RELEASE_* and MAX)

  • [x] src/include/rbd/librbd.h (LIBRBD_VER_MINOR to X)

  • [x] src/mon/mon_types.h (ceph::features::mon::FEATURE_* and related structs and helpers)

  • [x] src/mds/cephfs_features.h (CEPHFS_CURRENT_RELEASE)

脚本

  • [x] src/script/backport-create-issue (releases())

  • [x] src/script/ceph-release-notes (up to X)

杂项

  • [x] 更新 src/ceph-volume/ceph_volume/__init__.py (__release__)

  • [x] 更新 src/cephadm/cephadmlib/constants.py (DEFAULT_IMAGE_RELEASE and LATEST_STABLE_RELEASE to X)

功能位

  • [x] 确保 SERVER_X 已定义

  • [x] 将在版本 X-3 中标记为 DEPRECATED 的任何功能现在标记为 RETIRED

  • [ ] 查找 (1) 在 X-2 中存在且 (2) 没有客户端依赖关系的功能,并将其标记为从 X 开始 DEPRECATED

兼容集

  • [x] mon/Monitor.h (CEPH_MON_FEATURE_INCOMPAT_X)

  • [x] mon/Monitor.cc (包含在 get_supported_features() 中)

  • [x] mon/Monitor.cc (apply_monmap_to_compatset_features())

  • [x] mon/Monitor.cc (calc_quorum_requirements())

  • [x] test/cli/monmaptool/feature-set-unset-list.t (supported, persistent)

Mon

  • [x] src/tools/monmaptool.cc: 将新创建集群的 min_mon_release 提高到 X

  • [x] src/test/cli/monmaptool/8.t: 更新 monmaptool 输出到 X

  • [x] qa/standalone/mon/misc 调整 TEST_mon_features (添加 X 用例并调整 --mon-debug-no-require-X)

  • [x] qa/standalone/mon/misc 将 jqfilter=’.monmap.features.persistent | length == N’ 提高到 N+1

  • [x] mon/MgrMonitor.cc 调整 always_on_modules

  • [x] common/options/global.yaml.in 定义 mon_debug_no_require_X

  • [x] common/options/global.yaml.in 删除 mon_debug_no_require_X-2

  • [x] mon/OSDMonitor.cc create_initial: 调整新的 require_osd_release,并添加相关的 mon_debug_no_require_X

  • [x] mon/OSDMonitor.cc preprocess_boot: 调整“disallow boot of “ 条件以在 require_osd_release < X-2 时禁止 X。

  • [x] mon/OSDMonitor.cc: 调整“osd require-osd-release”以 (1) 允许设置 X,以及 (2) 检查所有 mons 和 OSD 是否都具有 X

  • [x] mon/MonCommands.h: 调整“osd require-osd-release”允许的选项以包含 X

  • [x] qa/workunits/cephtool/test.sh: 调整 require-osd-release 测试

OSDMap

  • [x] src/osd/OSDMap.cc 在 pending_require_osd_release() 中添加 SERVER_X 的发布名称映射

  • [x] OSDMap::get_min_compat_client: 核心团队评估

代码清理

  • [ ] 在代码中搜索“after X-1”或“X”以进行条件检查

  • [ ] 在代码中搜索 X-2 和 X-3 (CEPH_FEATURE_SERVER_* and ceph_release_t::*)

  • [ ] 在代码中搜索 require_osd_release

  • [ ] 在代码中搜索 min_mon_release

  • [ ] 检查 include/denc.h 如果 DENC_START 宏仍需要引用 squid

QA 套件

  • [x] 创建 qa/workunits/test_telemetry_(X-1).sh

  • [x] 创建 qa/workunits/test_telemetry_(X-1)_x.sh

  • [x] 创建 qa/suites/upgrade/(X-1)-x

  • [x] 删除 qa/suites/upgrade/(X-3)-x-*

  • [x] 更新 qa/fs/upgrade/ 以删除 (X-3) 并添加 (X-1);与 fs 团队确认/寻求帮助

  • [x] 更新 qa/ upgrade suites require-osd-release 调用到 tentacle

  • [x] 创建 qa/releases/X.yaml

  • [x] 创建 qa/suites/rados/thrash-old-clients/1-install/(X-1).yaml

  • [x] 更新 qa/suites/rados/encoder/1-task.yaml 以删除 (X-3) 并添加 X

ceph-build

ceph/ceph-build.git 仓库中

开发冻结后

  • [ ] 为新版本创建分支

  • [ ] 打开 Ceph 仓库的 Branch Protection 设置。将设置复制到新发布分支。

  • [ ] 在 main 上创建 vX.3.0 带注释标签,这样从新版本升级到 main 才不会被错误地认为是降级。

  • [ ] 删除 doc/releases/*.rst。这应该会留下用于文档构建目的的 doc/releases/releases.yml。另请参阅提交 33d63c3 (“doc: remove release notes for release branch”) 了解详细信息。

  • [ ] cherry-pick 8cf9ad62949516666ad0f2c0bb7726ef68e4d666 (“doc: add releases links to toc”)。会有简单的冲突。

  • [ ] 在 RTD 添加新主要版本的重定向。

  • [x] 将发布名称添加到 redmine(使用 https://tracker.ceph.com/custom_fields/16/edit

  • [x] 将发布名称添加到 .github/milestone.yml,以便 github actions 自动将里程碑添加到回溯(此提交必须回溯到发布分支)

  • [ ] 将发布分支添加到夜间构建:qa/crontab/teuthology-cronjobs

第一个发布候选版本

  • [ ] src/ceph_release: 将类型更改为 rc

  • [ ] 选择加入所有遥测通道,生成遥测报告,并验证没有收集敏感详细信息(如池名称)

  • [ ] 检查 pg_pool_t (osd/osd_types.h) 中是否存在新的池标志,如果它们不敏感,则将其添加到遥测的 basic_pool_flags 集合中

第一个稳定版本

  • [ ] src/ceph_release: 将类型更改为 stable

  • [ ] 为编码/解码测试生成新的对象语料库 - 请参阅 Corpus structure

  • [ ] src/cephadm/cephadmlib/constants.py: 更新 LATEST_STABLE_RELEASE

  • [ ] 在 readthedocs 中激活最新版本,如 readthedocs 文档 所述

  • [ ] 在 doc/start/os-recommendations.rst 中的表格中添加版本和支持的发行版

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入