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