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. | ||
