blob: 8e714b7a9afca9f69fdccfcd5873ed6c2a839cbb [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+===============+==============+
23| OP-TEE 3.13.0 | 16/Apr/21 |
24+---------------+--------------+
25| OP-TEE 3.12.0 | 15/Jan/21 |
26+---------------+--------------+
27| OP-TEE 3.11.0 | 16/Oct/20 |
28+---------------+--------------+
29| OP-TEE 3.10.0 | 21/Aug/20 |
30+---------------+--------------+
31
Joakim Bech6e53df72019-09-18 16:57:23 +020032.. _releases_changelog:
33
34Changelog
35*********
36The changelog is stored in the :ref:`optee_os` git (CHANGELOG.md_). There you
37can see what has been done between the different releases in terms of commits as
38well as pull requests.
39
40.. _releases_versioning_schema:
41
42Versioning schema
43*****************
44OP-TEE follows `Semantic Versioning 2.0.0`_. What that means in practice is well
45described at the link just shown.
46
47.. _releases_release_procedure:
48
49Release procedure
50*****************
51There are certain steps that needs to be done when making a release. This
52checklist here serves as guidance to the one in charge of making a new release.
53Roughly start with this 2-3 weeks before the targeted release date.
54
55tl;dr
56=====
57.. list-table:: Short version of the OP-TEE release procedure
58 :widths: 60 300 10
59 :header-rows: 1
60
61 * - When
62 (Tminus)
63 - Action
64 - Example
65
66 * - 3w
67 - Create release pull request
68 - `PR#3099`_
69
70 * - 3w
71 - Inform maintainers about upcoming release
72 -
73
74 * - 1w
Jerome Forissiera42d1c12019-10-15 09:45:34 +020075 - Increment the revision number in `mk/config.mk`_
76 - ``CFG_OPTEE_REVISION_MAJOR ?= 3`` ``CFG_OPTEE_REVISION_MINOR ?= x``
77
78 * - 1w
Joakim Bech6e53df72019-09-18 16:57:23 +020079 - Create release candidate tag in optee_* + build.git
80 - git tag -a 3.x.y-rc1 -m "3.x.y-rc1"
81
82 * - 1w
83 - Let maintainers know about the release candidate tag
84 -
85
86 * - 1w
87 - Test platform builds / devices
88 -
89
90 * - Release day
91 - Update CHANGELOG.md_
92 - `changelog example`_
93
94 * - Release day
95 - Collect/merge ``Tested-By`` tags
96 - `commit example`_
97
98 * - Release day
Jerome Forissier3bf08722020-07-01 17:29:30 +020099 - Create release tag in optee_* + build.git + linux.git
100 - | git tag -a 3.x.y -m "3.x.y"
101 | git tag -a optee-3.x.y -m "optee-3.x.y" # (Linux)
Joakim Bech6e53df72019-09-18 16:57:23 +0200102
103 * - Release day
104 - Create release branch in :ref:`manifest`
105 - git checkout -b 3.x.y origin/master
106
107 * - Release day
108 - Update manifest XML-files
109 - `3.6.0 stable`_
110
111 * - Release day
112 - Inform maintainers and stakeholder that release has been completed.
113 -
114
115
116Long version
117============
118
119 1. Create a "release pull request" at GitHub ought to collect ``Tested-By``
120 tags from various maintainers. As an example, see `PR#3099`_.
121
122 2. Send email to all maintainers to let them know about the upcoming
123 release. The addresses to the maintainers can be found in the
124 MAINTAINERS_ file.
125
126 .. hint::
Jerome Forissier50685cf2020-02-20 08:39:35 +0100127 With this command you will get all email addresses
Joakim Bech6e53df72019-09-18 16:57:23 +0200128
129 .. code-block:: bash
130
Jerome Forissier50685cf2020-02-20 08:39:35 +0100131 $ scripts/get_maintainer.py --release-to
Joakim Bech6e53df72019-09-18 16:57:23 +0200132
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200133 3. Increment the revision number in `mk/config.mk`:
134 ``CFG_OPTEE_REVISION_MAJOR`` and ``CFG_OPTEE_REVISION_MINOR``. These
135 values are made available to TAs and to the Normal World driver at boot
136 time.
137
138 4. Create a release candidate (RC) tag (annotated tag, i.e., ``git tag -a
Joakim Bech6e53df72019-09-18 16:57:23 +0200139 3.x.y-rc1 -m "3.x.y-rc1"``) in the following gits
140 ``optee_*`` and ``build.git``. One way to do it is like this
141
142 .. code-block:: bash
143
144 $ export VER=3.x.y-rc1
145 $ for d in optee* build; do ( cd $d; git tag -a $VER -m $VER ); done
146 $ for d in optee* build; do ( cd $d; git push origin $VER ); done
147
148
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200149 5. Send a follow up email to all maintainers to let them know that there is
Joakim Bech6e53df72019-09-18 16:57:23 +0200150 a release tag ready to be tested on their devices for the platforms that
151 they are maintaining.
152
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200153 6. In case major regressions are found, then fix those and create a another
Joakim Bech6e53df72019-09-18 16:57:23 +0200154 release candidate tag (i.e., repeat step 3 and 4 until there are no
155 remaining issues left).
156
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200157 7. On release day: Update CHANGELOG.md_ see this `changelog example`_ to see
Joakim Bech6e53df72019-09-18 16:57:23 +0200158 how that should look like.
159
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200160 8. Collect all tags (``Tested-By`` etc) from maintainers and use those in
Joakim Bech6e53df72019-09-18 16:57:23 +0200161 the commit message, for an example see this `commit example`_.
162
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200163 9. Create a release tag (annotated tag, i.e., ``git tag -a 3.x.y -m
Jerome Forissier3bf08722020-07-01 17:29:30 +0200164 "3.x.y"``) in the following gits ``optee_*`` and ``build.git``. Tag the
165 tip of the ``optee`` branch in ``linux.git``, the name of the tag has
166 to be prefixed with ``optee-`` to avoid confusions. For instance:
167 ``git tag -a optee-3.x.y -m "optee-3.x.y"``.
Joakim Bech6e53df72019-09-18 16:57:23 +0200168
169 .. hint::
170
Jerome Forissierfe882612020-01-28 10:48:46 +0100171 You can use the same steps as in step 4, when creating the tags.
Joakim Bech6e53df72019-09-18 16:57:23 +0200172
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200173 10. Create a new branch in :ref:`manifest` from ``master`` where the name
174 corresponds to the release you are preparing. I.e., ``git checkout -b
175 3.x.y origin/master``.
Joakim Bech6e53df72019-09-18 16:57:23 +0200176
177
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200178 11. Update all :ref:`manifest` XML-files in the :ref:`manifest` git, so they
Joakim Bech6e53df72019-09-18 16:57:23 +0200179 refer to the tag in the release we are working with (see `3.6.0 stable`_
180 commit as an example). This can be done with the make_stable.sh_ script.
181 Now it is also time to push the new branch and tag it. Example:
182
183 .. code-block:: bash
184
185 $ export VER=3.x.y
186 $ cd manifest
187 $ ./make_stable.sh -o -r $VER
188 $ git diff # make sure everything looks good
189 $ git commit -a -m "OP-TEE $VER stable"
190 $ git remote add upstream git@github.com:OP-TEE/manifest
191 $ git push upstream
Jerome Forissierc8f60612020-01-28 10:51:27 +0100192 $ git tag -a $VER -m $VER
Joakim Bech6e53df72019-09-18 16:57:23 +0200193 $ git push upstream tag $VER
194
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200195 12. Send a last email to maintainers and other stakeholders telling that the
Joakim Bech6e53df72019-09-18 16:57:23 +0200196 release has been completed.
197
198
199.. _3.6.0 stable: https://github.com/OP-TEE/manifest/commit/f181e959c21baddce82552104daf81a25f8fd898
200.. _CHANGELOG.md: https://github.com/OP-TEE/optee_os/blob/master/CHANGELOG.md
201.. _changelog example: https://github.com/OP-TEE/optee_os/commit/f398d4923da875370149ffee45c963d7adb41495#diff-4ac32a78649ca5bdd8e0ba38b7006a1e
202.. _commit example: https://github.com/OP-TEE/optee_os/commit/f398d4923da875370149ffee45c963d7adb41495
203.. _MAINTAINERS: https://github.com/OP-TEE/optee_os/blob/master/MAINTAINERS
204.. _make_stable.sh: https://github.com/OP-TEE/manifest/blob/master/make_stable.sh
205.. _PR#3099: https://github.com/OP-TEE/optee_os/pull/3099
206.. _Semantic Versioning 2.0.0: https://semver.org
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200207.. _mk/config.mk: https://github.com/OP-TEE/optee_os/blob/master/mk/config.mk