]> git.proxmox.com Git - ceph.git/blame - ceph/doc/dev/release-checklists.rst
update ceph source to reef 18.2.1
[ceph.git] / ceph / doc / dev / release-checklists.rst
CommitLineData
f67539c2
TL
1==================
2Release checklists
3==================
4
5Dev Kickoff
6===========
7
8These steps should be taken when starting a new major release, just after
9the previous release has been tagged (vX.2.0) and that tag has been merged
10back into master.
11
12X is the release we are just starting development on. X-1 is the one
13that was just released (X-1).2.0.
14
15Versions and tags
16-----------------
17
18- [x] Update CMakeLists.txt VERSION (right at the top to X.0.0)
1e59de90 19- [x] Update src/librbd/CMakeLists.txt VERSION (librbd target at the bottom to 1.X.0)
f67539c2 20- [x] Update src/ceph_release with the new release name, number, and type ('dev')
20effc67 21- [x] Initial tag vX.0.0 (so that we can distinguish from (and sort
1e59de90 22 after) the backported (X-1).2.Z versions.
f67539c2 23
1e59de90
TL
24### Notes on tagging
25* Tags must be annonated as CMake determines `CEPH_GIT_NICE_VER` by
26calling `git describe --always`.
27* vX.0.0 are special ones in the sense they are pushed manually (unlike v.X.2.n
28which are handled by Jenkins).
29* vX.0.0 should point to a commit before the first one in a kickoff branch.
f67539c2
TL
30
31Define release names and constants
32----------------------------------
33
34Make sure X (and, ideally, X+1) is defined:
35
36- [x] src/common/ceph_releases.h (`ceph_release_t`)
37- [x] src/common/ceph_strings.cc (`ceph_release_name()`)
38- [x] src/include/rados.h (`CEPH_RELEASE_*` and `MAX`)
1e59de90 39- [x] src/include/rbd/librbd.h (`LIBRBD_VER_MINOR` to X)
f67539c2
TL
40- [x] src/mon/mon_types.h (`ceph::features::mon::FEATURE_*` and related structs and helpers; note that monmaptool CLI test output will need adjustment)
41- [x] src/mds/cephfs_features.h (`CEPHFS_CURRENT_RELEASE`)
42
43Scripts
44~~~~~~~
45
46- [x] src/script/backport-resolve-issue (`releases()`, `ver_to_release()`... but for X-1)
47- [x] src/script/ceph-release-notes (X-1)
20effc67 48- [ ] ceph-build.git scripts/build_utils.sh `release_from_version()`
f67539c2
TL
49
50Misc
51~~~~
52- [x] update src/ceph-volume/ceph_volume/__init__.py (`__release__`)
1e59de90
TL
53- [x] update src/tools/monmaptool.cc (`min_mon_release` and corresponding output in `src/test/cli/monmaptool`)
54- [x] update src/cephadm/cephadm (`DEFAULT_IMAGE_RELEASE` to X)
55
56Docs
57~~~~
58
59- [x] Remove ``doc/releases/*.rst``. This should leave behind ``doc/releases/releases.yml`` which is used for doc building purposes.
60- [x] Cherry-pick 8cf9ad62949516666ad0f2c0bb7726ef68e4d666 ("doc: add releases links to toc"). There will be trivial conflicts.
61- [x] Add redirect for new major release at `RTD <https://readthedocs.org/dashboard/ceph/redirects/>`_.
f67539c2
TL
62
63Feature bits
64------------
65
66- [x] ensure that `SERVER_X` is defined
67- [x] change any features `DEPRECATED` in release X-3 are now marked `RETIRED`.
68- [ ] look for features that (1) were present in X-2 and (2) have no
69 client dependency and mark them `DEPRECATED` as of X.
70
71
72Compatsets
73----------
74
75- [x] mon/Monitor.h (`CEPH_MON_FEATURE_INCOMPAT_X`)
76- [x] mon/Monitor.cc (include in `get_supported_features()`)
77- [x] mon/Monitor.cc (`apply_monmap_to_compatset_features()`)
78- [x] mon/Monitor.cc (`calc_quorum_requirements()`)
1e59de90 79- [x] test/cli/monmaptool/feature-set-unset-list.t (`supported`, `persistent`)
f67539c2
TL
80
81Mon
82---
83
84- [x] qa/standalone/mon/misc adjust `TEST_mon_features` (add X cases and adjust `--mon-debug-no-require-X`)
1e59de90 85- [x] qa/standalone/mon/misc bump up `jqfilter='.monmap.features.persistent | length == N'` to `N+1`
f67539c2 86- [x] mon/MgrMonitor.cc adjust `always_on_modules`
1e59de90
TL
87- [x] common/options/global.yaml.in define `mon_debug_no_require_X`
88- [x] common/options/global.yaml.in remove `mon_debug_no_require_X-2`
f67539c2
TL
89- [x] mon/OSDMonitor.cc `create_initial`: adjust new `require_osd_release`, and add associated `mon_debug_no_require_X`
90- [x] mon/OSDMonitor.cc `preprocess_boot`: adjust "disallow boot of " condition to disallow X if `require_osd_release` < X-2.
91- [x] mon/OSDMonitor.cc: adjust "osd require-osd-release" to (1) allow setting X, and (2) check that all mons *and* OSDs have X
92- [x] mon/MonCommands.h: adjust "osd require-osd-release" allows options to include X
93- [x] qa/workunits/cephtool/test.sh: adjust `require-osd-release` test
94
95
96Code cleanup
97------------
98
99- [ ] search code for "after X-1" or "X" for conditional checks
100- [ ] search code for X-2 and X-3 (`CEPH_FEATURE_SERVER_*` and
101 `ceph_release_t::*`)
102- [ ] search code for `require_osd_release`
103- [ ] search code for `min_mon_release`
104
105QA suite
106--------
107
1e59de90 108- [x] create qa/suites/upgrade/(X-1)-x
f67539c2 109- [x] remove qa/suites/upgrade/(X-3)-x-*
f67539c2 110- [x] create qa/releases/X.yaml
1e59de90
TL
111- [x] create qa/suites/rados/thrash-old-clients/1-install/(X-1).yaml
112
113
114ceph-build
115----------
116In the `ceph/ceph-build.git` repo:
117
118- [x] add the version -> X mapping (`release_from_version()` in `scripts/build_utils.sh`)
119- [x] add the option for X (`case $RELEASE_BRANCH` in `ceph-dev-build/build/build_osc`)
120- [x] add the option for X (`case $RELEASE_BRANCH` in `ceph-dev-build/build/setup_osc`)
121- [x] 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)
122
f67539c2 123
1e59de90
TL
124After dev freeze
125================
f67539c2 126
1e59de90
TL
127- [x] add release name to redmine (using https://tracker.ceph.com/custom_fields/16/edit)
128- [x] add release name to .github/milestone.yml for github actions to automatically add milestone to backports
f67539c2
TL
129
130First release candidate
131=======================
132
1e59de90 133- [x] src/ceph_release: change type to `rc`
aee94f69 134- [x] opt-in to all telemetry channels, generate telemetry reports, and verify no sensitive details (like pools names) are collected
f67539c2
TL
135
136
137First stable release
138====================
139
05a536ef 140- [x] src/ceph_release: change type `stable`
f67539c2 141- [ ] generate new object corpus for encoding/decoding tests - see :doc:`corpus`
1e59de90 142- [ ] src/cephadm/cephadm: update `LATEST_STABLE_RELEASE`