xref: /OK3568_Linux_fs/yocto/poky/documentation/ref-manual/release-process.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2*4882a593Smuzhiyun
3*4882a593Smuzhiyun*****************************************************
4*4882a593SmuzhiyunYocto Project Releases and the Stable Release Process
5*4882a593Smuzhiyun*****************************************************
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunThe Yocto Project release process is predictable and consists of both
8*4882a593Smuzhiyunmajor and minor (point) releases. This brief chapter provides
9*4882a593Smuzhiyuninformation on how releases are named, their life cycle, and their
10*4882a593Smuzhiyunstability.
11*4882a593Smuzhiyun
12*4882a593SmuzhiyunMajor and Minor Release Cadence
13*4882a593Smuzhiyun===============================
14*4882a593Smuzhiyun
15*4882a593SmuzhiyunThe Yocto Project delivers major releases (e.g. &DISTRO;) using a six
16*4882a593Smuzhiyunmonth cadence roughly timed each April and October of the year.
17*4882a593SmuzhiyunFollowing are examples of some major YP releases with their codenames
18*4882a593Smuzhiyunalso shown. See the ":ref:`ref-manual/release-process:major release codenames`"
19*4882a593Smuzhiyunsection for information on codenames used with major releases.
20*4882a593Smuzhiyun
21*4882a593Smuzhiyun  - 2.2 (Morty)
22*4882a593Smuzhiyun  - 2.1 (Krogoth)
23*4882a593Smuzhiyun  - 2.0 (Jethro)
24*4882a593Smuzhiyun
25*4882a593SmuzhiyunWhile the cadence is never perfect, this timescale facilitates
26*4882a593Smuzhiyunregular releases that have strong QA cycles while not overwhelming users
27*4882a593Smuzhiyunwith too many new releases. The cadence is predictable and avoids many
28*4882a593Smuzhiyunmajor holidays in various geographies.
29*4882a593Smuzhiyun
30*4882a593SmuzhiyunThe Yocto project delivers minor (point) releases on an unscheduled
31*4882a593Smuzhiyunbasis and are usually driven by the accumulation of enough significant
32*4882a593Smuzhiyunfixes or enhancements to the associated major release. Following are
33*4882a593Smuzhiyunsome example past point releases:
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun  - 2.1.1
36*4882a593Smuzhiyun  - 2.1.2
37*4882a593Smuzhiyun  - 2.2.1
38*4882a593Smuzhiyun
39*4882a593SmuzhiyunThe point release
40*4882a593Smuzhiyunindicates a point in the major release branch where a full QA cycle and
41*4882a593Smuzhiyunrelease process validates the content of the new branch.
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun.. note::
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun   Realize that there can be patches merged onto the stable release
46*4882a593Smuzhiyun   branches as and when they become available.
47*4882a593Smuzhiyun
48*4882a593SmuzhiyunMajor Release Codenames
49*4882a593Smuzhiyun=======================
50*4882a593Smuzhiyun
51*4882a593SmuzhiyunEach major release receives a codename that identifies the release in
52*4882a593Smuzhiyunthe :ref:`overview-manual/development-environment:yocto project source repositories`.
53*4882a593SmuzhiyunThe concept is that branches of :term:`Metadata` with the same
54*4882a593Smuzhiyuncodename are likely to be compatible and thus work together.
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun.. note::
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun   Codenames are associated with major releases because a Yocto Project
59*4882a593Smuzhiyun   release number (e.g. &DISTRO;) could conflict with a given layer or
60*4882a593Smuzhiyun   company versioning scheme. Codenames are unique, interesting, and
61*4882a593Smuzhiyun   easily identifiable.
62*4882a593Smuzhiyun
63*4882a593SmuzhiyunReleases are given a nominal release version as well but the codename is
64*4882a593Smuzhiyunused in repositories for this reason. You can find information on Yocto
65*4882a593SmuzhiyunProject releases and codenames at :yocto_wiki:`/Releases`.
66*4882a593Smuzhiyun
67*4882a593SmuzhiyunOur :doc:`/migration-guides/index` detail how to migrate from one release of
68*4882a593Smuzhiyunthe Yocto Project to the next.
69*4882a593Smuzhiyun
70*4882a593SmuzhiyunStable Release Process
71*4882a593Smuzhiyun======================
72*4882a593Smuzhiyun
73*4882a593SmuzhiyunOnce released, the release enters the stable release process at which
74*4882a593Smuzhiyuntime a person is assigned as the maintainer for that stable release.
75*4882a593SmuzhiyunThis maintainer monitors activity for the release by investigating and
76*4882a593Smuzhiyunhandling nominated patches and backport activity. Only fixes and
77*4882a593Smuzhiyunenhancements that have first been applied on the "master" branch (i.e.
78*4882a593Smuzhiyunthe current, in-development branch) are considered for backporting to a
79*4882a593Smuzhiyunstable release.
80*4882a593Smuzhiyun
81*4882a593Smuzhiyun.. note::
82*4882a593Smuzhiyun
83*4882a593Smuzhiyun   The current Yocto Project policy regarding backporting is to consider
84*4882a593Smuzhiyun   bug fixes and security fixes only. Policy dictates that features are
85*4882a593Smuzhiyun   not backported to a stable release. This policy means generic recipe
86*4882a593Smuzhiyun   version upgrades are unlikely to be accepted for backporting. The
87*4882a593Smuzhiyun   exception to this policy occurs when there is a strong reason such as
88*4882a593Smuzhiyun   the fix happens to also be the preferred upstream approach.
89*4882a593Smuzhiyun
90*4882a593SmuzhiyunStable release branches have strong maintenance for about a year after
91*4882a593Smuzhiyuntheir initial release. Should significant issues be found for any
92*4882a593Smuzhiyunrelease regardless of its age, fixes could be backported to older
93*4882a593Smuzhiyunreleases. For issues that are not backported given an older release,
94*4882a593SmuzhiyunCommunity LTS trees and branches allow community members to share
95*4882a593Smuzhiyunpatches for older releases. However, these types of patches do not go
96*4882a593Smuzhiyunthrough the same release process as do point releases. You can find more
97*4882a593Smuzhiyuninformation about stable branch maintenance at
98*4882a593Smuzhiyun:yocto_wiki:`/Stable_branch_maintenance`.
99*4882a593Smuzhiyun
100*4882a593SmuzhiyunTesting and Quality Assurance
101*4882a593Smuzhiyun=============================
102*4882a593Smuzhiyun
103*4882a593SmuzhiyunPart of the Yocto Project development and release process is quality
104*4882a593Smuzhiyunassurance through the execution of test strategies. Test strategies
105*4882a593Smuzhiyunprovide the Yocto Project team a way to ensure a release is validated.
106*4882a593SmuzhiyunAdditionally, because the test strategies are visible to you as a
107*4882a593Smuzhiyundeveloper, you can validate your projects. This section overviews the
108*4882a593Smuzhiyunavailable test infrastructure used in the Yocto Project. For information
109*4882a593Smuzhiyunon how to run available tests on your projects, see the
110*4882a593Smuzhiyun":ref:`dev-manual/common-tasks:performing automated runtime testing`"
111*4882a593Smuzhiyunsection in the Yocto Project Development Tasks Manual.
112*4882a593Smuzhiyun
113*4882a593SmuzhiyunThe QA/testing infrastructure is woven into the project to the point
114*4882a593Smuzhiyunwhere core developers take some of it for granted. The infrastructure
115*4882a593Smuzhiyunconsists of the following pieces:
116*4882a593Smuzhiyun
117*4882a593Smuzhiyun-  ``bitbake-selftest``: A standalone command that runs unit tests on
118*4882a593Smuzhiyun   key pieces of BitBake and its fetchers.
119*4882a593Smuzhiyun
120*4882a593Smuzhiyun-  :ref:`ref-classes-sanity`: This automatically
121*4882a593Smuzhiyun   included class checks the build environment for missing tools (e.g.
122*4882a593Smuzhiyun   ``gcc``) or common misconfigurations such as
123*4882a593Smuzhiyun   :term:`MACHINE` set incorrectly.
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun-  :ref:`ref-classes-insane`: This class checks the
126*4882a593Smuzhiyun   generated output from builds for sanity. For example, if building for
127*4882a593Smuzhiyun   an ARM target, did the build produce ARM binaries. If, for example,
128*4882a593Smuzhiyun   the build produced PPC binaries then there is a problem.
129*4882a593Smuzhiyun
130*4882a593Smuzhiyun-  :ref:`ref-classes-testimage*`: This class
131*4882a593Smuzhiyun   performs runtime testing of images after they are built. The tests
132*4882a593Smuzhiyun   are usually used with :doc:`QEMU </dev-manual/qemu>`
133*4882a593Smuzhiyun   to boot the images and check the combined runtime result boot
134*4882a593Smuzhiyun   operation and functions. However, the test can also use the IP
135*4882a593Smuzhiyun   address of a machine to test.
136*4882a593Smuzhiyun
137*4882a593Smuzhiyun-  :ref:`ptest <dev-manual/common-tasks:testing packages with ptest>`:
138*4882a593Smuzhiyun   Runs tests against packages produced during the build for a given
139*4882a593Smuzhiyun   piece of software. The test allows the packages to be run within a
140*4882a593Smuzhiyun   target image.
141*4882a593Smuzhiyun
142*4882a593Smuzhiyun-  ``oe-selftest``: Tests combination BitBake invocations. These tests
143*4882a593Smuzhiyun   operate outside the OpenEmbedded build system itself. The
144*4882a593Smuzhiyun   ``oe-selftest`` can run all tests by default or can run selected
145*4882a593Smuzhiyun   tests or test suites.
146*4882a593Smuzhiyun
147*4882a593Smuzhiyun   .. note::
148*4882a593Smuzhiyun
149*4882a593Smuzhiyun      Running ``oe-selftest`` requires host packages beyond the "Essential"
150*4882a593Smuzhiyun      grouping. See the :ref:`ref-manual/system-requirements:required packages for the build host`
151*4882a593Smuzhiyun      section for more information.
152*4882a593Smuzhiyun
153*4882a593SmuzhiyunOriginally, much of this testing was done manually. However, significant
154*4882a593Smuzhiyuneffort has been made to automate the tests so that more people can use
155*4882a593Smuzhiyunthem and the Yocto Project development team can run them faster and more
156*4882a593Smuzhiyunefficiently.
157*4882a593Smuzhiyun
158*4882a593SmuzhiyunThe Yocto Project's main Autobuilder (&YOCTO_AB_URL;)
159*4882a593Smuzhiyunpublicly tests each Yocto Project release's code in the
160*4882a593Smuzhiyun:term:`OpenEmbedded-Core (OE-Core)`, Poky, and BitBake repositories. The testing
161*4882a593Smuzhiyunoccurs for both the current state of the "master" branch and also for
162*4882a593Smuzhiyunsubmitted patches. Testing for submitted patches usually occurs in the
163*4882a593Smuzhiyun"ross/mut" branch in the ``poky-contrib`` repository (i.e. the
164*4882a593Smuzhiyunmaster-under-test branch) or in the "master-next" branch in the ``poky``
165*4882a593Smuzhiyunrepository.
166*4882a593Smuzhiyun
167*4882a593Smuzhiyun.. note::
168*4882a593Smuzhiyun
169*4882a593Smuzhiyun   You can find all these branches in the
170*4882a593Smuzhiyun   :ref:`overview-manual/development-environment:yocto project source repositories`.
171*4882a593Smuzhiyun
172*4882a593SmuzhiyunTesting within these public branches ensures in a publicly visible way
173*4882a593Smuzhiyunthat all of the main supposed architectures and recipes in OE-Core
174*4882a593Smuzhiyunsuccessfully build and behave properly.
175*4882a593Smuzhiyun
176*4882a593SmuzhiyunVarious features such as ``multilib``, sub architectures (e.g. ``x32``,
177*4882a593Smuzhiyun``poky-tiny``, ``musl``, ``no-x11`` and and so forth),
178*4882a593Smuzhiyun``bitbake-selftest``, and ``oe-selftest`` are tested as part of the QA
179*4882a593Smuzhiyunprocess of a release. Complete testing and validation for a release
180*4882a593Smuzhiyuntakes the Autobuilder workers several hours.
181*4882a593Smuzhiyun
182*4882a593Smuzhiyun.. note::
183*4882a593Smuzhiyun
184*4882a593Smuzhiyun   The Autobuilder workers are non-homogeneous, which means regular
185*4882a593Smuzhiyun   testing across a variety of Linux distributions occurs. The
186*4882a593Smuzhiyun   Autobuilder is limited to only testing QEMU-based setups and not real
187*4882a593Smuzhiyun   hardware.
188*4882a593Smuzhiyun
189*4882a593SmuzhiyunFinally, in addition to the Autobuilder's tests, the Yocto Project QA
190*4882a593Smuzhiyunteam also performs testing on a variety of platforms, which includes
191*4882a593Smuzhiyunactual hardware, to ensure expected results.
192