blob: 5d8b46a565a803bfec67e7656ccedce105552746 [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+===============+==============+
Ruchika Gupta4ac6fbf2021-10-05 14:49:44 +053023| OP-TEE 3.19.0 | 14/Oct/22 |
24+---------------+--------------+
25| OP-TEE 3.18.0 | 15/July/22 |
26+---------------+--------------+
27| OP-TEE 3.17.0 | 15/Apr/22 |
28+---------------+--------------+
29| OP-TEE 3.16.0 | 14/Jan/22 |
30+---------------+--------------+
Ruchika Guptafe8638e2021-10-05 14:51:38 +053031| OP-TEE 3.15.0 | 18/Oct/21 |
Joakim Bech74ab0f92021-01-25 13:42:58 +010032+---------------+--------------+
33| OP-TEE 3.14.0 | 16/July/21 |
34+---------------+--------------+
Ruchika Guptafe8638e2021-10-05 14:51:38 +053035| OP-TEE 3.13.0 | 30/Apr/21 |
Joakim Bech9c0b8632020-07-27 14:00:59 +020036+---------------+--------------+
Joakim Bech74ab0f92021-01-25 13:42:58 +010037| OP-TEE 3.12.0 | 20/Jan/21 |
Joakim Bech9c0b8632020-07-27 14:00:59 +020038+---------------+--------------+
39| OP-TEE 3.11.0 | 16/Oct/20 |
40+---------------+--------------+
41| OP-TEE 3.10.0 | 21/Aug/20 |
42+---------------+--------------+
43
Joakim Bech6e53df72019-09-18 16:57:23 +020044.. _releases_changelog:
45
46Changelog
47*********
48The changelog is stored in the :ref:`optee_os` git (CHANGELOG.md_). There you
49can see what has been done between the different releases in terms of commits as
50well as pull requests.
51
52.. _releases_versioning_schema:
53
54Versioning schema
55*****************
56OP-TEE follows `Semantic Versioning 2.0.0`_. What that means in practice is well
57described at the link just shown.
58
59.. _releases_release_procedure:
60
61Release procedure
62*****************
63There are certain steps that needs to be done when making a release. This
64checklist here serves as guidance to the one in charge of making a new release.
65Roughly start with this 2-3 weeks before the targeted release date.
66
67tl;dr
68=====
69.. list-table:: Short version of the OP-TEE release procedure
70 :widths: 60 300 10
71 :header-rows: 1
72
73 * - When
74 (Tminus)
75 - Action
76 - Example
77
78 * - 3w
79 - Create release pull request
80 - `PR#3099`_
81
82 * - 3w
83 - Inform maintainers about upcoming release
84 -
85
86 * - 1w
Jerome Forissiera42d1c12019-10-15 09:45:34 +020087 - Increment the revision number in `mk/config.mk`_
88 - ``CFG_OPTEE_REVISION_MAJOR ?= 3`` ``CFG_OPTEE_REVISION_MINOR ?= x``
89
90 * - 1w
Joakim Bech6e53df72019-09-18 16:57:23 +020091 - Create release candidate tag in optee_* + build.git
92 - git tag -a 3.x.y-rc1 -m "3.x.y-rc1"
93
94 * - 1w
95 - Let maintainers know about the release candidate tag
96 -
97
98 * - 1w
99 - Test platform builds / devices
100 -
101
102 * - Release day
103 - Update CHANGELOG.md_
104 - `changelog example`_
105
106 * - Release day
107 - Collect/merge ``Tested-By`` tags
108 - `commit example`_
109
110 * - Release day
Jerome Forissier3bf08722020-07-01 17:29:30 +0200111 - Create release tag in optee_* + build.git + linux.git
112 - | git tag -a 3.x.y -m "3.x.y"
113 | git tag -a optee-3.x.y -m "optee-3.x.y" # (Linux)
Joakim Bech6e53df72019-09-18 16:57:23 +0200114
115 * - Release day
116 - Create release branch in :ref:`manifest`
117 - git checkout -b 3.x.y origin/master
118
119 * - Release day
120 - Update manifest XML-files
121 - `3.6.0 stable`_
122
123 * - Release day
124 - Inform maintainers and stakeholder that release has been completed.
125 -
126
127
128Long version
129============
130
131 1. Create a "release pull request" at GitHub ought to collect ``Tested-By``
132 tags from various maintainers. As an example, see `PR#3099`_.
133
134 2. Send email to all maintainers to let them know about the upcoming
135 release. The addresses to the maintainers can be found in the
136 MAINTAINERS_ file.
137
138 .. hint::
Jerome Forissier50685cf2020-02-20 08:39:35 +0100139 With this command you will get all email addresses
Joakim Bech6e53df72019-09-18 16:57:23 +0200140
141 .. code-block:: bash
142
Jerome Forissier50685cf2020-02-20 08:39:35 +0100143 $ scripts/get_maintainer.py --release-to
Joakim Bech6e53df72019-09-18 16:57:23 +0200144
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200145 3. Increment the revision number in `mk/config.mk`:
146 ``CFG_OPTEE_REVISION_MAJOR`` and ``CFG_OPTEE_REVISION_MINOR``. These
147 values are made available to TAs and to the Normal World driver at boot
148 time.
149
150 4. Create a release candidate (RC) tag (annotated tag, i.e., ``git tag -a
Joakim Bech6e53df72019-09-18 16:57:23 +0200151 3.x.y-rc1 -m "3.x.y-rc1"``) in the following gits
152 ``optee_*`` and ``build.git``. One way to do it is like this
153
154 .. code-block:: bash
155
156 $ export VER=3.x.y-rc1
157 $ for d in optee* build; do ( cd $d; git tag -a $VER -m $VER ); done
158 $ for d in optee* build; do ( cd $d; git push origin $VER ); done
159
160
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200161 5. Send a follow up email to all maintainers to let them know that there is
Joakim Bech6e53df72019-09-18 16:57:23 +0200162 a release tag ready to be tested on their devices for the platforms that
163 they are maintaining.
164
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200165 6. In case major regressions are found, then fix those and create a another
Joakim Bech6e53df72019-09-18 16:57:23 +0200166 release candidate tag (i.e., repeat step 3 and 4 until there are no
167 remaining issues left).
168
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200169 7. On release day: Update CHANGELOG.md_ see this `changelog example`_ to see
Joakim Bech6e53df72019-09-18 16:57:23 +0200170 how that should look like.
171
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200172 8. Collect all tags (``Tested-By`` etc) from maintainers and use those in
Joakim Bech6e53df72019-09-18 16:57:23 +0200173 the commit message, for an example see this `commit example`_.
174
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200175 9. Create a release tag (annotated tag, i.e., ``git tag -a 3.x.y -m
Jerome Forissier3bf08722020-07-01 17:29:30 +0200176 "3.x.y"``) in the following gits ``optee_*`` and ``build.git``. Tag the
177 tip of the ``optee`` branch in ``linux.git``, the name of the tag has
178 to be prefixed with ``optee-`` to avoid confusions. For instance:
179 ``git tag -a optee-3.x.y -m "optee-3.x.y"``.
Joakim Bech6e53df72019-09-18 16:57:23 +0200180
181 .. hint::
182
Jerome Forissierfe882612020-01-28 10:48:46 +0100183 You can use the same steps as in step 4, when creating the tags.
Joakim Bech6e53df72019-09-18 16:57:23 +0200184
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200185 10. Create a new branch in :ref:`manifest` from ``master`` where the name
186 corresponds to the release you are preparing. I.e., ``git checkout -b
187 3.x.y origin/master``.
Joakim Bech6e53df72019-09-18 16:57:23 +0200188
189
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200190 11. Update all :ref:`manifest` XML-files in the :ref:`manifest` git, so they
Joakim Bech6e53df72019-09-18 16:57:23 +0200191 refer to the tag in the release we are working with (see `3.6.0 stable`_
192 commit as an example). This can be done with the make_stable.sh_ script.
193 Now it is also time to push the new branch and tag it. Example:
194
195 .. code-block:: bash
196
197 $ export VER=3.x.y
198 $ cd manifest
199 $ ./make_stable.sh -o -r $VER
200 $ git diff # make sure everything looks good
201 $ git commit -a -m "OP-TEE $VER stable"
202 $ git remote add upstream git@github.com:OP-TEE/manifest
203 $ git push upstream
Jerome Forissierc8f60612020-01-28 10:51:27 +0100204 $ git tag -a $VER -m $VER
Joakim Bech6e53df72019-09-18 16:57:23 +0200205 $ git push upstream tag $VER
206
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200207 12. Send a last email to maintainers and other stakeholders telling that the
Joakim Bech6e53df72019-09-18 16:57:23 +0200208 release has been completed.
209
210
211.. _3.6.0 stable: https://github.com/OP-TEE/manifest/commit/f181e959c21baddce82552104daf81a25f8fd898
212.. _CHANGELOG.md: https://github.com/OP-TEE/optee_os/blob/master/CHANGELOG.md
213.. _changelog example: https://github.com/OP-TEE/optee_os/commit/f398d4923da875370149ffee45c963d7adb41495#diff-4ac32a78649ca5bdd8e0ba38b7006a1e
214.. _commit example: https://github.com/OP-TEE/optee_os/commit/f398d4923da875370149ffee45c963d7adb41495
215.. _MAINTAINERS: https://github.com/OP-TEE/optee_os/blob/master/MAINTAINERS
216.. _make_stable.sh: https://github.com/OP-TEE/manifest/blob/master/make_stable.sh
217.. _PR#3099: https://github.com/OP-TEE/optee_os/pull/3099
218.. _Semantic Versioning 2.0.0: https://semver.org
Jerome Forissiera42d1c12019-10-15 09:45:34 +0200219.. _mk/config.mk: https://github.com/OP-TEE/optee_os/blob/master/mk/config.mk