Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 1 | <!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 Bishop | 316dfdd | 2018-06-25 12:45:53 -0400 | [diff] [blame] | 64 | <ulink url='&YOCTO_DOCS_OM_URL;#yocto-project-repositories'>Yocto Project Source Repositories</ulink>. |
Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 65 | The concept is that branches of |
Brad Bishop | d7bf8c1 | 2018-02-25 22:55:05 -0500 | [diff] [blame] | 66 | <link linkend='metadata'>Metadata</link> |
Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 67 | 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 Bishop | d7bf8c1 | 2018-02-25 22:55:05 -0500 | [diff] [blame] | 134 | section in the Yocto Project Development Tasks Manual. |
Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 135 | </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 |
Brad Bishop | 1a4b7ee | 2018-12-16 17:11:34 -0800 | [diff] [blame] | 192 | "<link linkend='required-packages-for-the-build-host'>Required Packages for the Build Host</link>" |
Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 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 Bishop | d7bf8c1 | 2018-02-25 22:55:05 -0500 | [diff] [blame] | 209 | each Yocto Project release's code in the |
| 210 | <link linkend='oe-core'>OE-Core</link>, Poky, and BitBake |
Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 211 | 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 Bishop | 316dfdd | 2018-06-25 12:45:53 -0400 | [diff] [blame] | 220 | <ulink url='&YOCTO_DOCS_OM_URL;#source-repositories'>Source Repositories</ulink>. |
Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 221 | </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 | <!-- |
| 254 | vim: expandtab tw=80 ts=4 |
| 255 | --> |