Joakim Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 1 | .. _releases: |
| 2 | |
| 3 | Releases |
| 4 | ######## |
| 5 | |
| 6 | .. _releases_cadance: |
| 7 | |
| 8 | Cadence |
| 9 | ******* |
| 10 | New versions of OP-TEE are released four times a year, i.e., quarterly releases. |
Joakim Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 11 | |
Joakim Bech | 9c0b863 | 2020-07-27 14:00:59 +0200 | [diff] [blame] | 12 | .. _release_dates: |
| 13 | |
| 14 | Release dates |
| 15 | ============= |
| 16 | Starting from version 3.10.0 we track the old and also show the releases being |
| 17 | planned for the future in the table below. The dates will tell whether it is an |
| 18 | old, upcoming or future release. |
| 19 | |
| 20 | +---------------+--------------+ |
| 21 | | Version | Release date | |
| 22 | +===============+==============+ |
Joakim Bech | 6ea1825 | 2024-09-18 16:08:26 +0200 | [diff] [blame] | 23 | | 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 Forissier | cd5eb86 | 2023-09-26 11:24:44 +0200 | [diff] [blame] | 31 | | 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 Forissier | b09691a | 2022-11-02 10:35:46 +0100 | [diff] [blame] | 40 | +---------------+--------------+ |
| 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 Gupta | 4ac6fbf | 2021-10-05 14:49:44 +0530 | [diff] [blame] | 47 | | 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 Gupta | b5b116b | 2021-12-14 13:58:44 +0530 | [diff] [blame] | 53 | | OP-TEE 3.16.0 | 28/Jan/22 | |
Ruchika Gupta | 4ac6fbf | 2021-10-05 14:49:44 +0530 | [diff] [blame] | 54 | +---------------+--------------+ |
Ruchika Gupta | fe8638e | 2021-10-05 14:51:38 +0530 | [diff] [blame] | 55 | | OP-TEE 3.15.0 | 18/Oct/21 | |
Joakim Bech | 74ab0f9 | 2021-01-25 13:42:58 +0100 | [diff] [blame] | 56 | +---------------+--------------+ |
| 57 | | OP-TEE 3.14.0 | 16/July/21 | |
| 58 | +---------------+--------------+ |
Ruchika Gupta | fe8638e | 2021-10-05 14:51:38 +0530 | [diff] [blame] | 59 | | OP-TEE 3.13.0 | 30/Apr/21 | |
Joakim Bech | 9c0b863 | 2020-07-27 14:00:59 +0200 | [diff] [blame] | 60 | +---------------+--------------+ |
Joakim Bech | 74ab0f9 | 2021-01-25 13:42:58 +0100 | [diff] [blame] | 61 | | OP-TEE 3.12.0 | 20/Jan/21 | |
Joakim Bech | 9c0b863 | 2020-07-27 14:00:59 +0200 | [diff] [blame] | 62 | +---------------+--------------+ |
| 63 | | OP-TEE 3.11.0 | 16/Oct/20 | |
| 64 | +---------------+--------------+ |
| 65 | | OP-TEE 3.10.0 | 21/Aug/20 | |
| 66 | +---------------+--------------+ |
| 67 | |
Joakim Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 68 | .. _releases_changelog: |
| 69 | |
| 70 | Changelog |
| 71 | ********* |
| 72 | The changelog is stored in the :ref:`optee_os` git (CHANGELOG.md_). There you |
| 73 | can see what has been done between the different releases in terms of commits as |
| 74 | well as pull requests. |
| 75 | |
| 76 | .. _releases_versioning_schema: |
| 77 | |
| 78 | Versioning schema |
| 79 | ***************** |
| 80 | OP-TEE follows `Semantic Versioning 2.0.0`_. What that means in practice is well |
| 81 | described at the link just shown. |
| 82 | |
| 83 | .. _releases_release_procedure: |
| 84 | |
| 85 | Release procedure |
| 86 | ***************** |
| 87 | There are certain steps that needs to be done when making a release. This |
| 88 | checklist here serves as guidance to the one in charge of making a new release. |
Jerome Forissier | a421ae8 | 2025-06-20 13:58:50 +0200 | [diff] [blame] | 89 | Start with this 3 weeks before the targeted release date. |
Joakim Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 90 | |
| 91 | tl;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 Forissier | a421ae8 | 2025-06-20 13:58:50 +0200 | [diff] [blame] | 110 | * - 2w |
Jerome Forissier | a42d1c1 | 2019-10-15 09:45:34 +0200 | [diff] [blame] | 111 | - Increment the revision number in `mk/config.mk`_ |
| 112 | - ``CFG_OPTEE_REVISION_MAJOR ?= 3`` ``CFG_OPTEE_REVISION_MINOR ?= x`` |
| 113 | |
Jerome Forissier | a421ae8 | 2025-06-20 13:58:50 +0200 | [diff] [blame] | 114 | * - 2w |
Joakim Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 115 | - Create release candidate tag in optee_* + build.git |
| 116 | - git tag -a 3.x.y-rc1 -m "3.x.y-rc1" |
| 117 | |
Jerome Forissier | a421ae8 | 2025-06-20 13:58:50 +0200 | [diff] [blame] | 118 | * - 2w |
Joakim Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 119 | - Let maintainers know about the release candidate tag |
| 120 | - |
| 121 | |
Jerome Forissier | a421ae8 | 2025-06-20 13:58:50 +0200 | [diff] [blame] | 122 | * - 2w |
Joakim Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 123 | - 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 Forissier | 3bf0872 | 2020-07-01 17:29:30 +0200 | [diff] [blame] | 135 | - 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 Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 138 | |
| 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 | |
| 152 | Long 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 Forissier | 50685cf | 2020-02-20 08:39:35 +0100 | [diff] [blame] | 163 | With this command you will get all email addresses |
Joakim Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 164 | |
| 165 | .. code-block:: bash |
| 166 | |
Jerome Forissier | 50685cf | 2020-02-20 08:39:35 +0100 | [diff] [blame] | 167 | $ scripts/get_maintainer.py --release-to |
Joakim Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 168 | |
Jerome Forissier | a42d1c1 | 2019-10-15 09:45:34 +0200 | [diff] [blame] | 169 | 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 Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 175 | 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 Forissier | a42d1c1 | 2019-10-15 09:45:34 +0200 | [diff] [blame] | 185 | 5. Send a follow up email to all maintainers to let them know that there is |
Joakim Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 186 | a release tag ready to be tested on their devices for the platforms that |
| 187 | they are maintaining. |
| 188 | |
Jerome Forissier | a42d1c1 | 2019-10-15 09:45:34 +0200 | [diff] [blame] | 189 | 6. In case major regressions are found, then fix those and create a another |
Joakim Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 190 | release candidate tag (i.e., repeat step 3 and 4 until there are no |
| 191 | remaining issues left). |
| 192 | |
Jerome Forissier | a42d1c1 | 2019-10-15 09:45:34 +0200 | [diff] [blame] | 193 | 7. On release day: Update CHANGELOG.md_ see this `changelog example`_ to see |
Joakim Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 194 | how that should look like. |
| 195 | |
Jerome Forissier | a42d1c1 | 2019-10-15 09:45:34 +0200 | [diff] [blame] | 196 | 8. Collect all tags (``Tested-By`` etc) from maintainers and use those in |
Joakim Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 197 | the commit message, for an example see this `commit example`_. |
| 198 | |
Jerome Forissier | a42d1c1 | 2019-10-15 09:45:34 +0200 | [diff] [blame] | 199 | 9. Create a release tag (annotated tag, i.e., ``git tag -a 3.x.y -m |
Jerome Forissier | 3bf0872 | 2020-07-01 17:29:30 +0200 | [diff] [blame] | 200 | "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 Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 204 | |
| 205 | .. hint:: |
| 206 | |
Jerome Forissier | fe88261 | 2020-01-28 10:48:46 +0100 | [diff] [blame] | 207 | You can use the same steps as in step 4, when creating the tags. |
Joakim Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 208 | |
Jerome Forissier | a42d1c1 | 2019-10-15 09:45:34 +0200 | [diff] [blame] | 209 | 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 Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 212 | |
| 213 | |
Jerome Forissier | a42d1c1 | 2019-10-15 09:45:34 +0200 | [diff] [blame] | 214 | 11. Update all :ref:`manifest` XML-files in the :ref:`manifest` git, so they |
Joakim Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 215 | 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 Forissier | c8f6061 | 2020-01-28 10:51:27 +0100 | [diff] [blame] | 228 | $ git tag -a $VER -m $VER |
Joakim Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 229 | $ git push upstream tag $VER |
| 230 | |
Jerome Forissier | a42d1c1 | 2019-10-15 09:45:34 +0200 | [diff] [blame] | 231 | 12. Send a last email to maintainers and other stakeholders telling that the |
Joakim Bech | 6e53df7 | 2019-09-18 16:57:23 +0200 | [diff] [blame] | 232 | 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 Forissier | a42d1c1 | 2019-10-15 09:45:34 +0200 | [diff] [blame] | 243 | .. _mk/config.mk: https://github.com/OP-TEE/optee_os/blob/master/mk/config.mk |