blob: e9b9ad48a58ae83a36d93f83c20c4a93d83e332c [file] [log] [blame]
Joakim Bech6e53df72019-09-18 16:57:23 +02001.. _releases:
2
3Releases
4########
5
6.. _releases_cadance:
7
8Cadence
9*******
10New versions of OP-TEE are released four times a year, i.e., quarterly releases.
Joakim Bech6e53df72019-09-18 16:57:23 +020011
Joakim Bech9c0b8632020-07-27 14:00:59 +020012.. _release_dates:
13
14Release dates
15=============
16Starting from version 3.10.0 we track the old and also show the releases being
17planned for the future in the table below. The dates will tell whether it is an
18old, upcoming or future release.
19
20+---------------+--------------+
21| Version | Release date |
22+===============+==============+
Joakim Bech6ea18252024-09-18 16:08:26 +020023| OP-TEE 4.8.0 | 17/Oct/25 |
24+---------------+--------------+
25| OP-TEE 4.7.0 | 11/Jul/25 |
26+---------------+--------------+
27| OP-TEE 4.6.0 | 11/Apr/25 |
28+---------------+--------------+
29| OP-TEE 4.5.0 | 17/Jan/25 |
30+---------------+--------------+
Jerome Forissiercd5eb862023-09-26 11:24:44 +020031| OP-TEE 4.4.0 | 18/Oct/24 |
32+---------------+--------------+
33| OP-TEE 4.3.0 | 12/Jul/24 |
34+---------------+--------------+
35| OP-TEE 4.2.0 | 12/Apr/24 |
36+---------------+--------------+
37| OP-TEE 4.1.0 | 19/Jan/24 |
38+---------------+--------------+
39| OP-TEE 4.0.0 | 20/Oct/23 |
Jerome Forissierb09691a2022-11-02 10:35:46 +010040+---------------+--------------+
41| OP-TEE 3.22.0 | 14/Jul/23 |
42+---------------+--------------+
43| OP-TEE 3.21.0 | 14/Apr/23 |
44+---------------+--------------+
45| OP-TEE 3.20.0 | 20/Jan/23 |
46+---------------+--------------+
Ruchika Gupta4ac6fbf2021-10-05 14:49:44 +053047| OP-TEE 3.19.0 | 14/Oct/22 |
48+---------------+--------------+
49| OP-TEE 3.18.0 | 15/July/22 |
50+---------------+--------------+
51| OP-TEE 3.17.0 | 15/Apr/22 |
52+---------------+--------------+
Ruchika Guptab5b116b2021-12-14 13:58:44 +053053| OP-TEE 3.16.0 | 28/Jan/22 |
Ruchika Gupta4ac6fbf2021-10-05 14:49:44 +053054+---------------+--------------+
Ruchika Guptafe8638e2021-10-05 14:51:38 +053055| OP-TEE 3.15.0 | 18/Oct/21 |
Joakim Bech74ab0f92021-01-25 13:42:58 +010056+---------------+--------------+
57| OP-TEE 3.14.0 | 16/July/21 |
58+---------------+--------------+
Ruchika Guptafe8638e2021-10-05 14:51:38 +053059| OP-TEE 3.13.0 | 30/Apr/21 |
Joakim Bech9c0b8632020-07-27 14:00:59 +020060+---------------+--------------+
Joakim Bech74ab0f92021-01-25 13:42:58 +010061| OP-TEE 3.12.0 | 20/Jan/21 |
Joakim Bech9c0b8632020-07-27 14:00:59 +020062+---------------+--------------+
63| OP-TEE 3.11.0 | 16/Oct/20 |
64+---------------+--------------+
65| OP-TEE 3.10.0 | 21/Aug/20 |
66+---------------+--------------+
67
Joakim Bech6e53df72019-09-18 16:57:23 +020068.. _releases_changelog:
69
70Changelog
71*********
72The changelog is stored in the :ref:`optee_os` git (CHANGELOG.md_). There you
73can see what has been done between the different releases in terms of commits as
74well as pull requests.
75
76.. _releases_versioning_schema:
77
78Versioning schema
79*****************
80OP-TEE follows `Semantic Versioning 2.0.0`_. What that means in practice is well
81described at the link just shown.
82
83.. _releases_release_procedure:
84
85Release procedure
86*****************
87There are certain steps that needs to be done when making a release. This
88checklist here serves as guidance to the one in charge of making a new release.
Jerome Forissiera421ae82025-06-20 13:58:50 +020089Start with this 3 weeks before the targeted release date.
Joakim Bech6e53df72019-09-18 16:57:23 +020090
91tl;dr
92=====
93.. list-table:: Short version of the OP-TEE release procedure
94 :widths: 60 300 10
95 :header-rows: 1
96
97 * - When
98 (Tminus)
99 - Action
100 - Example
101
102 * - 3w
103 - Create release pull request
104 - `PR#3099`_
105
106 * - 3w
107 - Inform maintainers about upcoming release
108 -
109
Jerome Forissiera421ae82025-06-20 13:58:50 +0200110 * - 2w
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200111 - Increment the revision number in `mk/config.mk`_
112 - ``CFG_OPTEE_REVISION_MAJOR ?= 3`` ``CFG_OPTEE_REVISION_MINOR ?= x``
113
Jerome Forissiera421ae82025-06-20 13:58:50 +0200114 * - 2w
Joakim Bech6e53df72019-09-18 16:57:23 +0200115 - Create release candidate tag in optee_* + build.git
116 - git tag -a 3.x.y-rc1 -m "3.x.y-rc1"
117
Jerome Forissiera421ae82025-06-20 13:58:50 +0200118 * - 2w
Joakim Bech6e53df72019-09-18 16:57:23 +0200119 - Let maintainers know about the release candidate tag
120 -
121
Jerome Forissiera421ae82025-06-20 13:58:50 +0200122 * - 2w
Joakim Bech6e53df72019-09-18 16:57:23 +0200123 - Test platform builds / devices
124 -
125
126 * - Release day
127 - Update CHANGELOG.md_
128 - `changelog example`_
129
130 * - Release day
131 - Collect/merge ``Tested-By`` tags
132 - `commit example`_
133
134 * - Release day
Jerome Forissier3bf08722020-07-01 17:29:30 +0200135 - Create release tag in optee_* + build.git + linux.git
136 - | git tag -a 3.x.y -m "3.x.y"
137 | git tag -a optee-3.x.y -m "optee-3.x.y" # (Linux)
Joakim Bech6e53df72019-09-18 16:57:23 +0200138
139 * - Release day
140 - Create release branch in :ref:`manifest`
141 - git checkout -b 3.x.y origin/master
142
143 * - Release day
144 - Update manifest XML-files
145 - `3.6.0 stable`_
146
147 * - Release day
148 - Inform maintainers and stakeholder that release has been completed.
149 -
150
151
152Long version
153============
154
155 1. Create a "release pull request" at GitHub ought to collect ``Tested-By``
156 tags from various maintainers. As an example, see `PR#3099`_.
157
158 2. Send email to all maintainers to let them know about the upcoming
159 release. The addresses to the maintainers can be found in the
160 MAINTAINERS_ file.
161
162 .. hint::
Jerome Forissier50685cf2020-02-20 08:39:35 +0100163 With this command you will get all email addresses
Joakim Bech6e53df72019-09-18 16:57:23 +0200164
165 .. code-block:: bash
166
Jerome Forissier50685cf2020-02-20 08:39:35 +0100167 $ scripts/get_maintainer.py --release-to
Joakim Bech6e53df72019-09-18 16:57:23 +0200168
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200169 3. Increment the revision number in `mk/config.mk`:
170 ``CFG_OPTEE_REVISION_MAJOR`` and ``CFG_OPTEE_REVISION_MINOR``. These
171 values are made available to TAs and to the Normal World driver at boot
172 time.
173
174 4. Create a release candidate (RC) tag (annotated tag, i.e., ``git tag -a
Joakim Bech6e53df72019-09-18 16:57:23 +0200175 3.x.y-rc1 -m "3.x.y-rc1"``) in the following gits
176 ``optee_*`` and ``build.git``. One way to do it is like this
177
178 .. code-block:: bash
179
180 $ export VER=3.x.y-rc1
181 $ for d in optee* build; do ( cd $d; git tag -a $VER -m $VER ); done
182 $ for d in optee* build; do ( cd $d; git push origin $VER ); done
183
184
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200185 5. Send a follow up email to all maintainers to let them know that there is
Joakim Bech6e53df72019-09-18 16:57:23 +0200186 a release tag ready to be tested on their devices for the platforms that
187 they are maintaining.
188
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200189 6. In case major regressions are found, then fix those and create a another
Joakim Bech6e53df72019-09-18 16:57:23 +0200190 release candidate tag (i.e., repeat step 3 and 4 until there are no
191 remaining issues left).
192
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200193 7. On release day: Update CHANGELOG.md_ see this `changelog example`_ to see
Joakim Bech6e53df72019-09-18 16:57:23 +0200194 how that should look like.
195
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200196 8. Collect all tags (``Tested-By`` etc) from maintainers and use those in
Joakim Bech6e53df72019-09-18 16:57:23 +0200197 the commit message, for an example see this `commit example`_.
198
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200199 9. Create a release tag (annotated tag, i.e., ``git tag -a 3.x.y -m
Jerome Forissier3bf08722020-07-01 17:29:30 +0200200 "3.x.y"``) in the following gits ``optee_*`` and ``build.git``. Tag the
201 tip of the ``optee`` branch in ``linux.git``, the name of the tag has
202 to be prefixed with ``optee-`` to avoid confusions. For instance:
203 ``git tag -a optee-3.x.y -m "optee-3.x.y"``.
Joakim Bech6e53df72019-09-18 16:57:23 +0200204
205 .. hint::
206
Jerome Forissierfe882612020-01-28 10:48:46 +0100207 You can use the same steps as in step 4, when creating the tags.
Joakim Bech6e53df72019-09-18 16:57:23 +0200208
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200209 10. Create a new branch in :ref:`manifest` from ``master`` where the name
210 corresponds to the release you are preparing. I.e., ``git checkout -b
211 3.x.y origin/master``.
Joakim Bech6e53df72019-09-18 16:57:23 +0200212
213
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200214 11. Update all :ref:`manifest` XML-files in the :ref:`manifest` git, so they
Joakim Bech6e53df72019-09-18 16:57:23 +0200215 refer to the tag in the release we are working with (see `3.6.0 stable`_
216 commit as an example). This can be done with the make_stable.sh_ script.
217 Now it is also time to push the new branch and tag it. Example:
218
219 .. code-block:: bash
220
221 $ export VER=3.x.y
222 $ cd manifest
223 $ ./make_stable.sh -o -r $VER
224 $ git diff # make sure everything looks good
225 $ git commit -a -m "OP-TEE $VER stable"
226 $ git remote add upstream git@github.com:OP-TEE/manifest
227 $ git push upstream
Jerome Forissierc8f60612020-01-28 10:51:27 +0100228 $ git tag -a $VER -m $VER
Joakim Bech6e53df72019-09-18 16:57:23 +0200229 $ git push upstream tag $VER
230
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200231 12. Send a last email to maintainers and other stakeholders telling that the
Joakim Bech6e53df72019-09-18 16:57:23 +0200232 release has been completed.
233
234
235.. _3.6.0 stable: https://github.com/OP-TEE/manifest/commit/f181e959c21baddce82552104daf81a25f8fd898
236.. _CHANGELOG.md: https://github.com/OP-TEE/optee_os/blob/master/CHANGELOG.md
237.. _changelog example: https://github.com/OP-TEE/optee_os/commit/f398d4923da875370149ffee45c963d7adb41495#diff-4ac32a78649ca5bdd8e0ba38b7006a1e
238.. _commit example: https://github.com/OP-TEE/optee_os/commit/f398d4923da875370149ffee45c963d7adb41495
239.. _MAINTAINERS: https://github.com/OP-TEE/optee_os/blob/master/MAINTAINERS
240.. _make_stable.sh: https://github.com/OP-TEE/manifest/blob/master/make_stable.sh
241.. _PR#3099: https://github.com/OP-TEE/optee_os/pull/3099
242.. _Semantic Versioning 2.0.0: https://semver.org
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200243.. _mk/config.mk: https://github.com/OP-TEE/optee_os/blob/master/mk/config.mk