]>
Commit | Line | Data |
---|---|---|
f67539c2 TL |
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) | |
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 | |
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. | |
f67539c2 TL |
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`) | |
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 | ||
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) | |
20effc67 | 48 | - [ ] ceph-build.git scripts/build_utils.sh `release_from_version()` |
f67539c2 TL |
49 | |
50 | Misc | |
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 | ||
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/>`_. | |
f67539c2 TL |
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()`) | |
1e59de90 | 79 | - [x] test/cli/monmaptool/feature-set-unset-list.t (`supported`, `persistent`) |
f67539c2 TL |
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`) | |
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 | ||
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 | ||
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 | ||
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 | ||
f67539c2 | 123 | |
1e59de90 TL |
124 | After 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 | |
130 | First 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 | ||
137 | First 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` |