注意
本文档适用于 Ceph 的开发版本。
发布清单
开发启动
这些步骤应在新主要版本开始时执行,即在上一个版本打上标签(vX.2.0)并将该标签合并回 master 之后。
X 是我们刚开始开发的新版本。X-1 是刚刚发布的版本 (X-1).2.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_* 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 仓库中
[x] 添加版本 -> X 映射 (scripts/build_utils.sh 中的 release_from_version())
[x] 为 X 添加选项 (ceph-dev-build/build/build_osc 中的 case $RELEASE_BRANCH)
[x] 为 X 添加选项 (ceph-dev-build/build/setup_osc 中的 case $RELEASE_BRANCH)
[x] grep 以前的版本并添加相关的构建目标(例如,对于 reef https://github.com/ceph/ceph-build/pull/2076 和 https://github.com/ceph/ceph-build/pull/2119 和 https://github.com/ceph/ceph-build/pull/2315)
开发冻结后
[ ] 为新版本创建分支
[ ] 打开 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 中的表格中添加版本和支持的发行版