注意

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

发布检查清单

开发启动会

在开始一个新的主要版本时,应该在之前的版本(vX.2.0)被标记后立即采取这些步骤,并且该标记已经合并回主分支。

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] 更新 src/ceph_release,包含新的发布名称、编号和类型('dev')

  • [x] 初始标记 vX.0.0,以便我们可以将其与回滚的(X-1)。2.Z 版本区分开来并排序。

Note

  • 标签必须被注释,因为 CMake 会确定CEPH_GIT_NICE_VER通过调用git describe --always.

  • vX.0.0 是特殊的,因为它们是手动推送的(与 vX.1.Z 和 vX.2.Z 不同,后者由 Jenkins 处理)。

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

定义发布名称和常量

确保 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_*MAX)

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

  • [x] src/mon/mon_types.h (ceph::features::mon::FEATURE_*以及相关的结构和辅助函数)

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

脚本

  • [x] src/script/backport-resolve-issue (releases(), ver_to_release())

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

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

Misc

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

  • [x] 更新 src/cephadm/cephadmlib/constants.py (DEFAULT_IMAGE_RELEASELATEST_STABLE_RELEASE到 X)

功能位

  • [x] 确保SERVER_X被定义

  • [x] 更改发布 X-3 中的任何功能DEPRECATED现在被标记为RETIRED.

  • [ ] 查找功能,这些功能(1)在 X-2 中存在,并且(2)没有客户端依赖,并将它们标记为DEPRECATED从 X 开始。

兼容集

  • [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 (支持, 持久)

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’toN+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.cccreate_initial: 调整新的require_osd_release,并添加相关的mon_debug_no_require_X

  • [x] mon/OSDMonitor.ccpreprocess_boot: 调整“禁止启动”条件以禁止 X 如果require_osd_release< X-2。

  • [x] mon/OSDMonitor.cc: 调整“osd require-osd-release”以(1)允许设置 X,以及(2)检查所有 monOSDs 是否有 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 添加发布名称映射到SERVER_X in pending_require_osd_release()

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

代码清理

  • [ ] 搜索代码中的“after X-1”或“X”用于条件检查

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

  • [ ] 搜索代码中的require_osd_release

  • [ ] 搜索代码中的min_mon_release

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

测试套件

  • [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);与文件系统团队确认/帮助

  • [x] 更新 qa/ 升级套件 require-osd-release 调用至 tentacle

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

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

ceph构建

ceph/ceph-build.git仓库:

开发冻结后

  • [ ] 创建新发布的分支

  • [ ] 在上创建 vX.3.0 注释标签main以确保从新发布到主分支的升级不会被错误地视为降级。

  • [ ] 移除doc/releases/*.rst. 这应该留下doc/releases/releases.yml用于文档构建目的。另见提交 33d63c3(“doc: 移除发布分支的发布说明”)的详细信息。

  • [ ] cherry-pick 8cf9ad62949516666ad0f2c0bb7726ef68e4d666 (“doc: 添加发布链接到目录表”)。这将导致琐碎的冲突。

  • [ ] 在 RTD 添加新主要发布的重定向RTD.

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

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

  • [ ] 在 nightlies 中添加发布分支:qa/crontab/teuthology-cronjobs

第一个候选发布

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

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

  • [ ] 检查新池标志是否存在于 pg_pool_t(osd/osd_types.h)中,并将它们添加到遥测的 basic_pool_flags 收集,以防它们不是敏感的

第一个稳定发布

  • [ ] src/ceph_release: 更改类型稳定版本(例如,

  • [ ] 生成新的编码/解码测试对象库 - 见语料库结构

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

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

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.