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