]> git.proxmox.com Git - ceph.git/blob - ceph/doc/dev/release-checklists.rst
6299c378348ea304f4b6bada8aee2fe8266421c9
[ceph.git] / ceph / doc / dev / release-checklists.rst
1 ==================
2 Release checklists
3 ==================
4
5 Dev Kickoff
6 ===========
7
8 These steps should be taken when starting a new major release, just after
9 the previous release has been tagged (vX.2.0) and that tag has been merged
10 back into master.
11
12 X is the release we are just starting development on. X-1 is the one
13 that was just released (X-1).2.0.
14
15 Versions and tags
16 -----------------
17
18 - [x] Update CMakeLists.txt VERSION (right at the top to X.0.0)
19 - [x] Update src/librbd/CMakeLists.txt VERSION (librbd target at the bottom to 1.X.0)
20 - [x] Update src/ceph_release with the new release name, number, and type ('dev')
21 - [x] Initial tag vX.0.0 (so that we can distinguish from (and sort
22 after) the backported (X-1).2.Z versions.
23
24 ### Notes on tagging
25 * Tags must be annonated as CMake determines `CEPH_GIT_NICE_VER` by
26 calling `git describe --always`.
27 * vX.0.0 are special ones in the sense they are pushed manually (unlike v.X.2.n
28 which are handled by Jenkins).
29 * vX.0.0 should point to a commit before the first one in a kickoff branch.
30
31 Define release names and constants
32 ----------------------------------
33
34 Make 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`)
39 - [x] src/include/rbd/librbd.h (`LIBRBD_VER_MINOR` to X)
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
43 Scripts
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)
48 - [ ] ceph-build.git scripts/build_utils.sh `release_from_version()`
49
50 Misc
51 ~~~~
52 - [x] update src/ceph-volume/ceph_volume/__init__.py (`__release__`)
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
56 Docs
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/>`_.
62
63 Feature 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
72 Compatsets
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()`)
79 - [x] test/cli/monmaptool/feature-set-unset-list.t (`supported`, `persistent`)
80
81 Mon
82 ---
83
84 - [x] qa/standalone/mon/misc adjust `TEST_mon_features` (add X cases and adjust `--mon-debug-no-require-X`)
85 - [x] qa/standalone/mon/misc bump up `jqfilter='.monmap.features.persistent | length == N'` to `N+1`
86 - [x] mon/MgrMonitor.cc adjust `always_on_modules`
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`
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
96 Code 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
105 QA suite
106 --------
107
108 - [x] create qa/suites/upgrade/(X-1)-x
109 - [x] remove qa/suites/upgrade/(X-3)-x-*
110 - [x] create qa/releases/X.yaml
111 - [x] create qa/suites/rados/thrash-old-clients/1-install/(X-1).yaml
112
113
114 ceph-build
115 ----------
116 In 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
123
124 After dev freeze
125 ================
126
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
129
130 First release candidate
131 =======================
132
133 - [x] src/ceph_release: change type to `rc`
134 - [x] opt-in to all telemetry channels, generate telemetry reports, and verify no sensitive details (like pools names) are collected
135
136
137 First stable release
138 ====================
139
140 - [x] src/ceph_release: change type `stable`
141 - [ ] generate new object corpus for encoding/decoding tests - see :doc:`corpus`
142 - [ ] src/cephadm/cephadm: update `LATEST_STABLE_RELEASE`