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