2020-03-29 15:30:46 +00:00
==================
Release checklists
==================
Dev Kickoff
===========
2020-03-26 02:22:15 +00:00
These steps should be taken when starting a new major release, just after
the previous release has been tagged (vX.2.0) and that tag has been merged
back into master.
2020-03-28 13:49:28 +00:00
X is the release we are just starting development on. X-1 is the one
that was just released (X-1).2.0.
2020-03-26 02:22:15 +00:00
Versions and tags
-----------------
2023-05-09 14:36:45 +00:00
- [x] Update CMakeLists.txt VERSION (right at the top to X.0.0)
2023-05-09 14:34:23 +00:00
- [ ] Update src/librbd/CMakeLists.txt VERSION (librbd target at the bottom to 1.X.0)
- [ ] Update src/ceph_release with the new release name, number, and type ('dev')
- [ ] Initial tag vX.0.0 (so that we can distinguish from (and sort
2022-09-30 09:48:07 +00:00
after) the backported (X-1).2.Z versions.
### Notes on tagging
* Tags must be annonated as CMake determines `CEPH_GIT_NICE_VER` by
calling `git describe --always` .
* vX.0.0 are special ones in the sense they are pushed manually (unlike v.X.2.n
which are handled by Jenkins).
* vX.0.0 should point to a commit before the first one in a kickoff branch.
2020-03-26 02:22:15 +00:00
Define release names and constants
----------------------------------
Make sure X (and, ideally, X+1) is defined:
2023-05-09 14:34:23 +00:00
- [ ] src/common/ceph_releases.h (`ceph_release_t` )
- [ ] src/common/ceph_strings.cc (`ceph_release_name()` )
- [ ] src/include/rados.h (`CEPH_RELEASE_*` and `MAX` )
- [ ] src/include/rbd/librbd.h (`LIBRBD_VER_MINOR` to X)
- [ ] src/mon/mon_types.h (`ceph::features::mon::FEATURE_*` and related structs and helpers; note that monmaptool CLI test output will need adjustment)
- [ ] src/mds/cephfs_features.h (`CEPHFS_CURRENT_RELEASE` )
2020-03-26 02:22:15 +00:00
Scripts
~~~~~~~
2023-05-09 14:34:23 +00:00
- [ ] src/script/backport-resolve-issue (`releases()` , `ver_to_release()` ... but for X-1)
- [ ] src/script/ceph-release-notes (X-1)
2021-01-22 20:11:29 +00:00
- [ ] ceph-build.git scripts/build_utils.sh `release_from_version()`
2020-03-26 02:22:15 +00:00
Misc
~~~~
2023-05-09 14:34:23 +00:00
- [ ] update src/ceph-volume/ceph_volume/__init__.py (`__release__` )
- [ ] update src/tools/monmaptool.cc (`min_mon_release` and corresponding output in `src/test/cli/monmaptool` )
- [ ] update src/cephadm/cephadmlib/constants.py (`DEFAULT_IMAGE_RELEASE` to X)
2020-03-26 02:30:15 +00:00
2022-11-22 17:44:16 +00:00
Docs
~~~~
2023-05-09 14:34:23 +00:00
- [ ] Remove `` doc/releases/*.rst `` . This should leave behind `` doc/releases/releases.yml `` which is used for doc building purposes.
- [ ] Cherry-pick 8cf9ad62949516666ad0f2c0bb7726ef68e4d666 ("doc: add releases links to toc"). There will be trivial conflicts.
- [ ] Add redirect for new major release at `RTD <https://readthedocs.org/dashboard/ceph/redirects/> `_ .
2022-11-22 17:44:16 +00:00
2020-03-26 02:30:15 +00:00
Feature bits
------------
2023-05-09 14:34:23 +00:00
- [ ] ensure that `SERVER_X` is defined
- [ ] change any features `DEPRECATED` in release X-3 are now marked `RETIRED` .
2020-03-28 13:49:28 +00:00
- [ ] look for features that (1) were present in X-2 and (2) have no
2020-03-29 15:28:15 +00:00
client dependency and mark them `DEPRECATED` as of X.
2020-03-26 02:30:15 +00:00
Compatsets
----------
2023-05-09 14:34:23 +00:00
- [ ] mon/Monitor.h (`CEPH_MON_FEATURE_INCOMPAT_X` )
- [ ] mon/Monitor.cc (include in `get_supported_features()` )
- [ ] mon/Monitor.cc (`apply_monmap_to_compatset_features()` )
- [ ] mon/Monitor.cc (`calc_quorum_requirements()` )
- [ ] test/cli/monmaptool/feature-set-unset-list.t (`supported` , `persistent` )
2020-03-26 02:30:15 +00:00
2020-03-28 14:16:59 +00:00
Mon
---
2023-05-09 14:34:23 +00:00
- [ ] qa/standalone/mon/misc adjust `TEST_mon_features` (add X cases and adjust `--mon-debug-no-require-X` )
- [ ] qa/standalone/mon/misc bump up `jqfilter='.monmap.features.persistent | length == N'` to `N+1`
- [ ] mon/MgrMonitor.cc adjust `always_on_modules`
- [ ] common/options/global.yaml.in define `mon_debug_no_require_X`
- [ ] common/options/global.yaml.in remove `mon_debug_no_require_X-2`
- [ ] mon/OSDMonitor.cc `create_initial` : adjust new `require_osd_release` , and add associated `mon_debug_no_require_X`
- [ ] mon/OSDMonitor.cc `preprocess_boot` : adjust "disallow boot of " condition to disallow X if `require_osd_release` < X-2.
- [ ] mon/OSDMonitor.cc: adjust "osd require-osd-release" to (1) allow setting X, and (2) check that all mons *and* OSDs have X
- [ ] mon/MonCommands.h: adjust "osd require-osd-release" allows options to include X
- [ ] qa/workunits/cephtool/test.sh: adjust `require-osd-release` test
2020-03-28 14:16:59 +00:00
2020-03-28 14:23:31 +00:00
Code cleanup
------------
- [ ] search code for "after X-1" or "X" for conditional checks
2020-03-29 15:28:15 +00:00
- [ ] search code for X-2 and X-3 (`CEPH_FEATURE_SERVER_*` and
`ceph_release_t::*` )
- [ ] search code for `require_osd_release`
- [ ] search code for `min_mon_release`
2020-03-29 14:37:57 +00:00
QA suite
--------
2023-05-09 14:34:23 +00:00
- [ ] create qa/suites/upgrade/(X-1)-x
- [ ] remove qa/suites/upgrade/(X-3)-x-*
- [ ] create qa/releases/X.yaml
- [ ] create qa/suites/rados/thrash-old-clients/1-install/(X-1).yaml
2020-03-29 14:39:21 +00:00
2020-03-29 15:30:46 +00:00
2022-09-20 14:23:25 +00:00
ceph-build
----------
In the `ceph/ceph-build.git` repo:
2023-05-09 14:34:23 +00:00
- [ ] add the version -> X mapping (`release_from_version()` in `scripts/build_utils.sh` )
- [ ] add the option for X (`case $RELEASE_BRANCH` in `ceph-dev-build/build/build_osc` )
- [ ] add the option for X (`case $RELEASE_BRANCH` in `ceph-dev-build/build/setup_osc` )
- [ ] grep for previous release and add relevant build targets (e.g. for reef https://github.com/ceph/ceph-build/pull/2076 and https://github.com/ceph/ceph-build/pull/2119)
2022-09-20 14:23:25 +00:00
2020-03-29 15:30:46 +00:00
2023-06-09 15:20:36 +00:00
ceph-container
--------------
In the `ceph/ceph-container.git` repo:
- [ ] Add the release name to `Makefile`
- [ ] Update `ceph-releases/ALL/centos/daemon-base/__DOCKERFILE_INSTALL__` with the with the supported nfs-ganesha version
- [ ] Update `contrib/build-push-ceph-container-imgs.sh` with the new release
- [ ] Update `contrib/ceph-build-config.sh` with the release name
- [ ] Update `contrib/common.sh` with supported version numbers
- [ ] Update `maint-lib/ceph_version.sh` with the release name
See https://github.com/ceph/ceph-container/pull/2109 as an example for what to do.
2023-03-14 18:45:30 +00:00
After dev freeze
================
2023-05-09 14:34:23 +00:00
- [ ] add release name to redmine (using https://tracker.ceph.com/custom_fields/16/edit)
- [ ] add release name to .github/milestone.yml for github actions to automatically add milestone to backports (this commit must be backported to the release branch)
2023-03-14 18:45:30 +00:00
2020-03-29 15:30:46 +00:00
First release candidate
=======================
- [ ] src/ceph_release: change type to `rc`
2021-11-01 15:19:30 +00:00
- [ ] opt-in to all telemetry channels, generate telemetry reports, and verify no sensitive details (like pools names) are collected
2020-03-29 15:30:46 +00:00
First stable release
====================
- [ ] src/ceph_release: change type `stable`
2020-04-16 02:25:55 +00:00
- [ ] generate new object corpus for encoding/decoding tests - see :doc: `corpus`
2023-08-29 19:17:14 +00:00
- [ ] src/cephadm/cephadmlib/constants.py: update `LATEST_STABLE_RELEASE`