blob: 93ab6ed08a2852a9114dcc221e231e62daecacdf [file] [log] [blame]
Andrew Geisslerf0343792020-11-18 10:42:21 -06001.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
Andrew Geisslerc9f78652020-09-18 14:11:35 -05002
3*****************************************************
4Yocto Project Releases and the Stable Release Process
5*****************************************************
6
7The Yocto Project release process is predictable and consists of both
8major and minor (point) releases. This brief chapter provides
9information on how releases are named, their life cycle, and their
10stability.
11
12Major and Minor Release Cadence
13===============================
14
Andrew Geisslerd1e89492021-02-12 15:35:20 -060015The Yocto Project delivers major releases (e.g. &DISTRO;) using a six
Andrew Geisslerc9f78652020-09-18 14:11:35 -050016month cadence roughly timed each April and October of the year.
17Following are examples of some major YP releases with their codenames
Andrew Geissler3b8a17c2021-04-15 15:55:55 -050018also shown. See the ":ref:`ref-manual/release-process:major release codenames`"
19section for information on codenames used with major releases.
Andrew Geisslerc9f78652020-09-18 14:11:35 -050020
21 - 2.2 (Morty)
22 - 2.1 (Krogoth)
23 - 2.0 (Jethro)
24
25While the cadence is never perfect, this timescale facilitates
26regular releases that have strong QA cycles while not overwhelming users
27with too many new releases. The cadence is predictable and avoids many
28major holidays in various geographies.
29
30The Yocto project delivers minor (point) releases on an unscheduled
31basis and are usually driven by the accumulation of enough significant
32fixes or enhancements to the associated major release. Following are
33some example past point releases:
34
35 - 2.1.1
36 - 2.1.2
37 - 2.2.1
38
39The point release
40indicates a point in the major release branch where a full QA cycle and
41release process validates the content of the new branch.
42
43.. note::
44
45 Realize that there can be patches merged onto the stable release
46 branches as and when they become available.
47
48Major Release Codenames
49=======================
50
51Each major release receives a codename that identifies the release in
Andrew Geissler09209ee2020-12-13 08:44:15 -060052the :ref:`overview-manual/development-environment:yocto project source repositories`.
Andrew Geisslerc9f78652020-09-18 14:11:35 -050053The concept is that branches of :term:`Metadata` with the same
54codename are likely to be compatible and thus work together.
55
56.. note::
57
58 Codenames are associated with major releases because a Yocto Project
Andrew Geisslerd1e89492021-02-12 15:35:20 -060059 release number (e.g. &DISTRO;) could conflict with a given layer or
Andrew Geisslerc9f78652020-09-18 14:11:35 -050060 company versioning scheme. Codenames are unique, interesting, and
61 easily identifiable.
62
63Releases are given a nominal release version as well but the codename is
64used in repositories for this reason. You can find information on Yocto
65Project releases and codenames at
Andrew Geissler09209ee2020-12-13 08:44:15 -060066:yocto_wiki:`/Releases`.
Andrew Geisslerc9f78652020-09-18 14:11:35 -050067
68Stable Release Process
69======================
70
71Once released, the release enters the stable release process at which
72time a person is assigned as the maintainer for that stable release.
73This maintainer monitors activity for the release by investigating and
74handling nominated patches and backport activity. Only fixes and
75enhancements that have first been applied on the "master" branch (i.e.
76the current, in-development branch) are considered for backporting to a
77stable release.
78
79.. note::
80
81 The current Yocto Project policy regarding backporting is to consider
82 bug fixes and security fixes only. Policy dictates that features are
83 not backported to a stable release. This policy means generic recipe
84 version upgrades are unlikely to be accepted for backporting. The
85 exception to this policy occurs when a strong reason exists such as
86 the fix happens to also be the preferred upstream approach.
87
88Stable release branches have strong maintenance for about a year after
89their initial release. Should significant issues be found for any
90release regardless of its age, fixes could be backported to older
91releases. For issues that are not backported given an older release,
92Community LTS trees and branches exist where community members share
93patches for older releases. However, these types of patches do not go
94through the same release process as do point releases. You can find more
95information about stable branch maintenance at
Andrew Geissler09209ee2020-12-13 08:44:15 -060096:yocto_wiki:`/Stable_branch_maintenance`.
Andrew Geisslerc9f78652020-09-18 14:11:35 -050097
98Testing and Quality Assurance
99=============================
100
101Part of the Yocto Project development and release process is quality
102assurance through the execution of test strategies. Test strategies
103provide the Yocto Project team a way to ensure a release is validated.
104Additionally, because the test strategies are visible to you as a
105developer, you can validate your projects. This section overviews the
106available test infrastructure used in the Yocto Project. For information
107on how to run available tests on your projects, see the
Andrew Geissler09209ee2020-12-13 08:44:15 -0600108":ref:`dev-manual/common-tasks:performing automated runtime testing`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500109section in the Yocto Project Development Tasks Manual.
110
111The QA/testing infrastructure is woven into the project to the point
112where core developers take some of it for granted. The infrastructure
113consists of the following pieces:
114
115- ``bitbake-selftest``: A standalone command that runs unit tests on
116 key pieces of BitBake and its fetchers.
117
118- :ref:`sanity.bbclass <ref-classes-sanity>`: This automatically
119 included class checks the build environment for missing tools (e.g.
120 ``gcc``) or common misconfigurations such as
121 :term:`MACHINE` set incorrectly.
122
123- :ref:`insane.bbclass <ref-classes-insane>`: This class checks the
124 generated output from builds for sanity. For example, if building for
125 an ARM target, did the build produce ARM binaries. If, for example,
126 the build produced PPC binaries then there is a problem.
127
128- :ref:`testimage.bbclass <ref-classes-testimage*>`: This class
129 performs runtime testing of images after they are built. The tests
Andrew Geissler09209ee2020-12-13 08:44:15 -0600130 are usually used with :doc:`QEMU </dev-manual/qemu>`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500131 to boot the images and check the combined runtime result boot
132 operation and functions. However, the test can also use the IP
133 address of a machine to test.
134
Andrew Geissler09209ee2020-12-13 08:44:15 -0600135- :ref:`ptest <dev-manual/common-tasks:testing packages with ptest>`:
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500136 Runs tests against packages produced during the build for a given
Andrew Geissler3b8a17c2021-04-15 15:55:55 -0500137 piece of software. The test allows the packages to be run within a
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500138 target image.
139
140- ``oe-selftest``: Tests combination BitBake invocations. These tests
141 operate outside the OpenEmbedded build system itself. The
142 ``oe-selftest`` can run all tests by default or can run selected
143 tests or test suites.
144
145 .. note::
146
Andrew Geissler4c19ea12020-10-27 13:52:24 -0500147 Running ``oe-selftest`` requires host packages beyond the "Essential"
Andrew Geissler09209ee2020-12-13 08:44:15 -0600148 grouping. See the :ref:`ref-manual/system-requirements:required packages for the build host`
Andrew Geissler4c19ea12020-10-27 13:52:24 -0500149 section for more information.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500150
151Originally, much of this testing was done manually. However, significant
152effort has been made to automate the tests so that more people can use
153them and the Yocto Project development team can run them faster and more
154efficiently.
155
Andrew Geissler4c19ea12020-10-27 13:52:24 -0500156The Yocto Project's main Autobuilder (&YOCTO_AB_URL;)
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500157publicly tests each Yocto Project release's code in the
158:term:`OpenEmbedded-Core (OE-Core)`, Poky, and BitBake repositories. The testing
159occurs for both the current state of the "master" branch and also for
160submitted patches. Testing for submitted patches usually occurs in the
161"ross/mut" branch in the ``poky-contrib`` repository (i.e. the
162master-under-test branch) or in the "master-next" branch in the ``poky``
163repository.
164
165.. note::
166
167 You can find all these branches in the Yocto Project
168 Source Repositories
169 .
170
171Testing within these public branches ensures in a publicly visible way
172that all of the main supposed architectures and recipes in OE-Core
173successfully build and behave properly.
174
175Various features such as ``multilib``, sub architectures (e.g. ``x32``,
176``poky-tiny``, ``musl``, ``no-x11`` and and so forth),
177``bitbake-selftest``, and ``oe-selftest`` are tested as part of the QA
178process of a release. Complete testing and validation for a release
179takes the Autobuilder workers several hours.
180
181.. note::
182
183 The Autobuilder workers are non-homogeneous, which means regular
184 testing across a variety of Linux distributions occurs. The
185 Autobuilder is limited to only testing QEMU-based setups and not real
186 hardware.
187
188Finally, in addition to the Autobuilder's tests, the Yocto Project QA
189team also performs testing on a variety of platforms, which includes
190actual hardware, to ensure expected results.