diff options
Diffstat (limited to 'documentation/ref-manual/ref-release-process.rst')
-rw-r--r-- | documentation/ref-manual/ref-release-process.rst | 182 |
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 | ***************************************************** | ||
2 | Yocto Project Releases and the Stable Release Process | ||
3 | ***************************************************** | ||
4 | |||
5 | The Yocto Project release process is predictable and consists of both | ||
6 | major and minor (point) releases. This brief chapter provides | ||
7 | information on how releases are named, their life cycle, and their | ||
8 | stability. | ||
9 | |||
10 | Major and Minor Release Cadence | ||
11 | =============================== | ||
12 | |||
13 | The Yocto Project delivers major releases (e.g. DISTRO) using a six | ||
14 | month cadence roughly timed each April and October of the year. | ||
15 | Following are examples of some major YP releases with their codenames | ||
16 | also shown. See the "`Major Release | ||
17 | Codenames <#major-release-codenames>`__" section for information on | ||
18 | codenames used with major releases. 2.2 (Morty) 2.1 (Krogoth) 2.0 | ||
19 | (Jethro) While the cadence is never perfect, this timescale facilitates | ||
20 | regular releases that have strong QA cycles while not overwhelming users | ||
21 | with too many new releases. The cadence is predictable and avoids many | ||
22 | major holidays in various geographies. | ||
23 | |||
24 | The Yocto project delivers minor (point) releases on an unscheduled | ||
25 | basis and are usually driven by the accumulation of enough significant | ||
26 | fixes or enhancements to the associated major release. Following are | ||
27 | some example past point releases: 2.1.1 2.1.2 2.2.1 The point release | ||
28 | indicates a point in the major release branch where a full QA cycle and | ||
29 | release 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 | |||
36 | Major Release Codenames | ||
37 | ======================= | ||
38 | |||
39 | Each major release receives a codename that identifies the release in | ||
40 | the `Yocto Project Source | ||
41 | Repositories <&YOCTO_DOCS_OM_URL;#yocto-project-repositories>`__. The | ||
42 | concept is that branches of `Metadata <#metadata>`__ with the same | ||
43 | codename 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 | |||
52 | Releases are given a nominal release version as well but the codename is | ||
53 | used in repositories for this reason. You can find information on Yocto | ||
54 | Project releases and codenames at | ||
55 | ` <https://wiki.yoctoproject.org/wiki/Releases>`__. | ||
56 | |||
57 | Stable Release Process | ||
58 | ====================== | ||
59 | |||
60 | Once released, the release enters the stable release process at which | ||
61 | time a person is assigned as the maintainer for that stable release. | ||
62 | This maintainer monitors activity for the release by investigating and | ||
63 | handling nominated patches and backport activity. Only fixes and | ||
64 | enhancements that have first been applied on the "master" branch (i.e. | ||
65 | the current, in-development branch) are considered for backporting to a | ||
66 | stable 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 | |||
77 | Stable release branches have strong maintenance for about a year after | ||
78 | their initial release. Should significant issues be found for any | ||
79 | release regardless of its age, fixes could be backported to older | ||
80 | releases. For issues that are not backported given an older release, | ||
81 | Community LTS trees and branches exist where community members share | ||
82 | patches for older releases. However, these types of patches do not go | ||
83 | through the same release process as do point releases. You can find more | ||
84 | information about stable branch maintenance at | ||
85 | ` <https://wiki.yoctoproject.org/wiki/Stable_branch_maintenance>`__. | ||
86 | |||
87 | Testing and Quality Assurance | ||
88 | ============================= | ||
89 | |||
90 | Part of the Yocto Project development and release process is quality | ||
91 | assurance through the execution of test strategies. Test strategies | ||
92 | provide the Yocto Project team a way to ensure a release is validated. | ||
93 | Additionally, because the test strategies are visible to you as a | ||
94 | developer, you can validate your projects. This section overviews the | ||
95 | available test infrastructure used in the Yocto Project. For information | ||
96 | on how to run available tests on your projects, see the "`Performing | ||
97 | Automated Runtime | ||
98 | Testing <&YOCTO_DOCS_DEV_URL;#performing-automated-runtime-testing>`__" | ||
99 | section in the Yocto Project Development Tasks Manual. | ||
100 | |||
101 | The QA/testing infrastructure is woven into the project to the point | ||
102 | where core developers take some of it for granted. The infrastructure | ||
103 | consists 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 | |||
143 | Originally, much of this testing was done manually. However, significant | ||
144 | effort has been made to automate the tests so that more people can use | ||
145 | them and the Yocto Project development team can run them faster and more | ||
146 | efficiently. | ||
147 | |||
148 | The Yocto Project's main Autobuilder (``autobuilder.yoctoproject.org``) | ||
149 | publicly tests each Yocto Project release's code in the | ||
150 | `OE-Core <#oe-core>`__, Poky, and BitBake repositories. The testing | ||
151 | occurs for both the current state of the "master" branch and also for | ||
152 | submitted patches. Testing for submitted patches usually occurs in the | ||
153 | "ross/mut" branch in the ``poky-contrib`` repository (i.e. the | ||
154 | master-under-test branch) or in the "master-next" branch in the ``poky`` | ||
155 | repository. | ||
156 | |||
157 | .. note:: | ||
158 | |||
159 | You can find all these branches in the Yocto Project | ||
160 | Source Repositories | ||
161 | . | ||
162 | |||
163 | Testing within these public branches ensures in a publicly visible way | ||
164 | that all of the main supposed architectures and recipes in OE-Core | ||
165 | successfully build and behave properly. | ||
166 | |||
167 | Various 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 | ||
170 | process of a release. Complete testing and validation for a release | ||
171 | takes 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 | |||
180 | Finally, in addition to the Autobuilder's tests, the Yocto Project QA | ||
181 | team also performs testing on a variety of platforms, which includes | ||
182 | actual hardware, to ensure expected results. | ||