blob: e2902eb38ba87a08e5523512aa259273e3251717 [file] [log] [blame]
Brad Bishop6e60e8b2018-02-01 10:27:11 -05001<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
2"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
3[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
4
5<chapter id='ref-release-process'>
6<title>Yocto Project Releases and the Stable Release Process</title>
7
8<para>
9 The Yocto Project release process is predictable and consists of both
10 major and minor (point) releases.
11 This brief chapter provides information on how releases are named, their
12 life cycle, and their stability.
13</para>
14
15<section id='major-and-minor-release-cadence'>
16 <title>Major and Minor Release Cadence</title>
17
18 <para>
19 The Yocto Project delivers major releases (e.g. &DISTRO;) using a six
20 month cadence roughly timed each April and October of the year.
21 Following are examples of some major YP releases with their codenames
22 also shown.
23 See the
24 "<link linkend='major-release-codenames'>Major Release Codenames</link>"
25 section for information on codenames used with major releases.
26 <literallayout class='monospaced'>
27 2.2 (Morty)
28 2.1 (Krogoth)
29 2.0 (Jethro)
30 </literallayout>
31 While the cadence is never perfect, this timescale facilitates
32 regular releases that have strong QA cycles while not overwhelming
33 users with too many new releases.
34 The cadence is predictable and avoids many major holidays in various
35 geographies.
36 </para>
37
38 <para>
39 The Yocto project delivers minor (point) releases on an unscheduled
40 basis and are usually driven by the accumulation of enough significant
41 fixes or enhancements to the associated major release.
42 Following are some example past point releases:
43 <literallayout class='monospaced'>
44 2.1.1
45 2.1.2
46 2.2.1
47 </literallayout>
48 The point release indicates a point in the major release branch where
49 a full QA cycle and release process validates the content of the new
50 branch.
51 <note>
52 Realize that there can be patches merged onto the stable release
53 branches as and when they become available.
54 </note>
55 </para>
56</section>
57
58<section id='major-release-codenames'>
59 <title>Major Release Codenames</title>
60
61 <para>
62 Each major release receives a codename that identifies the release in
63 the
Brad Bishopd7bf8c12018-02-25 22:55:05 -050064 <link linkend='yocto-project-repositories'>Yocto Project Source Repositories</link>.
Brad Bishop6e60e8b2018-02-01 10:27:11 -050065 The concept is that branches of
Brad Bishopd7bf8c12018-02-25 22:55:05 -050066 <link linkend='metadata'>Metadata</link>
Brad Bishop6e60e8b2018-02-01 10:27:11 -050067 with the same codename are likely to be compatible and thus
68 work together.
69 <note>
70 Codenames are associated with major releases because a Yocto
71 Project release number (e.g. &DISTRO;) could conflict with
72 a given layer or company versioning scheme.
73 Codenames are unique, interesting, and easily identifiable.
74 </note>
75 Releases are given a nominal release version as well but the codename
76 is used in repositories for this reason.
77 You can find information on Yocto Project releases and codenames at
78 <ulink url='https://wiki.yoctoproject.org/wiki/Releases'></ulink>.
79 </para>
80</section>
81
82<section id='stable-release-process'>
83 <title>Stable Release Process</title>
84
85 <para>
86 Once released, the release enters the stable release process at which
87 time a person is assigned as the maintainer for that stable release.
88 This maintainer monitors activity for the release by investigating
89 and handling nominated patches and backport activity.
90 Only fixes and enhancements that have first been applied on the
91 "master" branch (i.e. the current, in-development branch) are
92 considered for backporting to a stable release.
93 <note>
94 The current Yocto Project policy regarding backporting is to
95 consider bug fixes and security fixes only.
96 Policy dictates that features are not backported to a stable
97 release.
98 This policy means generic recipe version upgrades are unlikely to
99 be accepted for backporting.
100 The exception to this policy occurs when a strong reason exists
101 such as the fix happens to also be the preferred upstream approach.
102 </note>
103 </para>
104
105 <para>
106 Stable release branches have strong maintenance for about a year after
107 their initial release.
108 Should significant issues be found for any release regardless of its
109 age, fixes could be backported to older releases.
110 For issues that are not backported given an older release,
111 Community LTS trees and branches exist where
112 community members share patches for older releases.
113 However, these types of patches do not go through the same release
114 process as do point releases.
115 You can find more information about stable branch maintenance at
116 <ulink url='https://wiki.yoctoproject.org/wiki/Stable_branch_maintenance'></ulink>.
117 </para>
118</section>
119
120<section id='testing-and-quality-assurance'>
121 <title>Testing and Quality Assurance</title>
122
123 <para>
124 Part of the Yocto Project development and release process is quality
125 assurance through the execution of test strategies.
126 Test strategies provide the Yocto Project team a way to ensure a
127 release is validated.
128 Additionally, because the test strategies are visible to you as a
129 developer, you can validate your projects.
130 This section overviews the available test infrastructure used in the
131 Yocto Project.
132 For information on how to run available tests on your projects, see the
133 "<ulink url='&YOCTO_DOCS_DEV_URL;#performing-automated-runtime-testing'>Performing Automated Runtime Testing</ulink>"
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500134 section in the Yocto Project Development Tasks Manual.
Brad Bishop6e60e8b2018-02-01 10:27:11 -0500135 </para>
136
137 <para>
138 The QA/testing infrastructure is woven into the project to the point
139 where core developers take some of it for granted.
140 The infrastructure consists of the following pieces:
141 <itemizedlist>
142 <listitem><para>
143 <filename>bitbake-selftest</filename>:
144 A standalone command that runs unit tests on key pieces of
145 BitBake and its fetchers.
146 </para></listitem>
147 <listitem><para>
148 <link linkend='ref-classes-sanity'><filename>sanity.bbclass</filename></link>:
149 This automatically included class checks the build environment
150 for missing tools (e.g. <filename>gcc</filename>) or common
151 misconfigurations such as
152 <link linkend='var-MACHINE'><filename>MACHINE</filename></link>
153 set incorrectly.
154 </para></listitem>
155 <listitem><para>
156 <link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>:
157 This class checks the generated output from builds for sanity.
158 For example, if building for an ARM target, did the build
159 produce ARM binaries.
160 If, for example, the build produced PPC binaries then there
161 is a problem.
162 </para></listitem>
163 <listitem><para>
164 <link linkend='ref-classes-testimage*'><filename>testimage.bbclass</filename></link>:
165 This class performs runtime testing of images after they are
166 built.
167 The tests are usually used with
168 <ulink url='&YOCTO_DOCS_DEV_URL;#dev-manual-qemu'>QEMU</ulink>
169 to boot the images and check the combined runtime result
170 boot operation and functions.
171 However, the test can also use the IP address of a machine to
172 test.
173 </para></listitem>
174 <listitem><para>
175 <ulink url='&YOCTO_DOCS_DEV_URL;#testing-packages-with-ptest'><filename>ptest</filename></ulink>:
176 Runs tests against packages produced during the build for a
177 given piece of software.
178 The test allows the packages to be be run within a target
179 image.
180 </para></listitem>
181 <listitem><para>
182 <filename>oe-selftest</filename>:
183 Tests combination BitBake invocations.
184 These tests operate outside the OpenEmbedded build system
185 itself.
186 The <filename>oe-selftest</filename> can run all tests by
187 default or can run selected tests or test suites.
188 <note>
189 Running <filename>oe-selftest</filename> requires
190 host packages beyond the "Essential" grouping.
191 See the
192 "<link linkend='required-packages-for-the-host-development-system'>Required Packages for the Host Development System</link>"
193 section for more information.
194 </note>
195 </para></listitem>
196 </itemizedlist>
197 </para>
198
199 <para>
200 Originally, much of this testing was done manually.
201 However, significant effort has been made to automate the tests so
202 that more people can use them and the Yocto Project development team
203 can run them faster and more efficiently.
204 </para>
205
206 <para>
207 The Yocto Project's main Autobuilder
208 (<filename>autobuilder.yoctoproject.org</filename>) publicly tests
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500209 each Yocto Project release's code in the
210 <link linkend='oe-core'>OE-Core</link>, Poky, and BitBake
Brad Bishop6e60e8b2018-02-01 10:27:11 -0500211 repositories.
212 The testing occurs for both the current state of the
213 "master" branch and also for submitted patches.
214 Testing for submitted patches usually occurs in the
215 "ross/mut" branch in the <filename>poky-contrib</filename> repository
216 (i.e. the master-under-test branch) or in the "master-next" branch
217 in the <filename>poky</filename> repository.
218 <note>
219 You can find all these branches in the Yocto Project
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500220 <link linkend='source-repositories'>Source Repositories</link>.
Brad Bishop6e60e8b2018-02-01 10:27:11 -0500221 </note>
222 Testing within these public branches ensures in a publicly visible way
223 that all of the main supposed architectures and recipes in OE-Core
224 successfully build and behave properly.
225 </para>
226
227 <para>
228 Various features such as <filename>multilib</filename>, sub
229 architectures (e.g. <filename>x32</filename>,
230 <filename>poky-tiny</filename>, <filename>musl</filename>,
231 <filename>no-x11</filename> and and so forth),
232 <filename>bitbake-selftest</filename>, and
233 <filename>oe-selftest</filename> are tested as part of
234 the QA process of a release.
235 Complete testing and validation for a release takes the Autobuilder
236 workers several hours.
237 <note>
238 The Autobuilder workers are non-homogeneous, which means regular
239 testing across a variety of Linux distributions occurs.
240 The Autobuilder is limited to only testing QEMU-based setups and
241 not real hardware.
242 </note>
243 </para>
244
245 <para>
246 Finally, in addition to the Autobuilder's tests, the Yocto Project
247 QA team also performs testing on a variety of platforms, which includes
248 actual hardware, to ensure expected results.
249 </para>
250</section>
251
252</chapter>
253<!--
254vim: expandtab tw=80 ts=4
255-->