release-process.rst 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. .. SPDX-License-Identifier: CC-BY-SA-2.0-UK
  2. *****************************************************
  3. Yocto Project Releases and the Stable Release Process
  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. Major and Minor Release Cadence
  10. ===============================
  11. The Yocto Project delivers major releases (e.g. &DISTRO;) using a six
  12. month cadence roughly timed each April and October of the year.
  13. Here are examples of some major YP releases with their codenames
  14. also shown. See the ":ref:`ref-manual/release-process:major release codenames`"
  15. section for information on codenames used with major releases.
  16. - 4.1 ("Langdale")
  17. - 4.0 ("Kirkstone")
  18. - 3.4 ("Honister")
  19. 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. The Yocto project delivers minor (point) releases on an unscheduled
  24. basis and are usually driven by the accumulation of enough significant
  25. fixes or enhancements to the associated major release.
  26. Some example past point releases are:
  27. - 4.1.3
  28. - 4.0.8
  29. - 3.4.4
  30. The point release
  31. indicates a point in the major release branch where a full QA cycle and
  32. release process validates the content of the new branch.
  33. .. note::
  34. Realize that there can be patches merged onto the stable release
  35. branches as and when they become available.
  36. Major Release Codenames
  37. =======================
  38. Each major release receives a codename that identifies the release in
  39. the :ref:`overview-manual/development-environment:yocto project source repositories`.
  40. The concept is that branches of :term:`Metadata` with the same
  41. codename are likely to be compatible and thus work together.
  42. .. note::
  43. Codenames are associated with major releases because a Yocto Project
  44. release number (e.g. &DISTRO;) could conflict with a given layer or
  45. company versioning scheme. Codenames are unique, interesting, and
  46. easily identifiable.
  47. Releases are given a nominal release version as well but the codename is
  48. used in repositories for this reason. You can find information on Yocto
  49. Project releases and codenames at :yocto_wiki:`/Releases`.
  50. Our :doc:`/migration-guides/index` detail how to migrate from one release of
  51. the Yocto Project to the next.
  52. Stable Release Process
  53. ======================
  54. Once released, the release enters the stable release process at which
  55. time a person is assigned as the maintainer for that stable release.
  56. This maintainer monitors activity for the release by investigating and
  57. handling nominated patches and backport activity. Only fixes and
  58. enhancements that have first been applied on the "master" branch (i.e.
  59. the current, in-development branch) are considered for backporting to a
  60. stable release.
  61. .. note::
  62. The current Yocto Project policy regarding backporting is to consider
  63. bug fixes and security fixes only. Policy dictates that features are
  64. not backported to a stable release. This policy means generic recipe
  65. version upgrades are unlikely to be accepted for backporting. The
  66. exception to this policy occurs when there is a strong reason such as
  67. the fix happens to also be the preferred upstream approach.
  68. .. _ref-long-term-support-releases:
  69. Long Term Support Releases
  70. ==========================
  71. While stable releases are supported for a duration of seven months,
  72. some specific ones are now supported for a longer period by the Yocto
  73. Project, and are called Long Term Support (:term:`LTS`) releases.
  74. When significant issues are found, :term:`LTS` releases allow to publish
  75. fixes not only for the current stable release, but also to the
  76. :term:`LTS` releases that are still supported. Older stable releases which
  77. have reached their End of Life (EOL) won't receive such updates.
  78. This started with version 3.1 ("Dunfell"), released in April 2020, which
  79. the project initially committed to supporting for two years, but this duration
  80. was later extended to four years.
  81. A new :term:`LTS` release is made every two years and is supported for four
  82. years. This offers more stability to project users and leaves more time to
  83. upgrade to the following :term:`LTS` release.
  84. The currently supported :term:`LTS` releases are:
  85. - Version 5.0 ("Scarthgap"), released in April 2024 and supported until April 2028.
  86. - Version 4.0 ("Kirkstone"), released in May 2022 and supported until May 2026.
  87. See :yocto_wiki:`/Stable_Release_and_LTS` for details about the management
  88. of stable and :term:`LTS` releases.
  89. This documentation was built for the &DISTRO_NAME; release.
  90. .. image:: svg/releases.*
  91. :width: 100%
  92. .. note::
  93. In some circumstances, a layer can be created by the community in order to
  94. add a specific feature or support a new version of some package for an :term:`LTS`
  95. release. This is called a :term:`Mixin` layer. These are thin and specific
  96. purpose layers which can be stacked with an :term:`LTS` release to "mix" a specific
  97. feature into that build. These are created on an as-needed basis and
  98. maintained by the people who need them.
  99. Policies on testing these layers depend on how widespread their usage is and
  100. determined on a case-by-case basis. You can find some :term:`Mixin` layers in the
  101. :yocto_git:`meta-lts-mixins </meta-lts-mixins>` repository. While the Yocto
  102. Project provides hosting for those repositories, it does not provides
  103. testing on them. Other :term:`Mixin` layers may be released elsewhere by the wider
  104. community.
  105. Testing and Quality Assurance
  106. =============================
  107. Part of the Yocto Project development and release process is quality
  108. assurance through the execution of test strategies. Test strategies
  109. provide the Yocto Project team a way to ensure a release is validated.
  110. Additionally, because the test strategies are visible to you as a
  111. developer, you can validate your projects. This section overviews the
  112. available test infrastructure used in the Yocto Project. For information
  113. on how to run available tests on your projects, see the
  114. ":ref:`test-manual/runtime-testing:performing automated runtime testing`"
  115. section in the Yocto Project Test Environment Manual.
  116. The QA/testing infrastructure is woven into the project to the point
  117. where core developers take some of it for granted. The infrastructure
  118. consists of the following pieces:
  119. - ``bitbake-selftest``: A standalone command that runs unit tests on
  120. key pieces of BitBake and its fetchers.
  121. - :ref:`ref-classes-sanity`: This automatically
  122. included class checks the build environment for missing tools (e.g.
  123. ``gcc``) or common misconfigurations such as
  124. :term:`MACHINE` set incorrectly.
  125. - :ref:`ref-classes-insane`: This class checks the
  126. generated output from builds for sanity. For example, if building for
  127. an ARM target, did the build produce ARM binaries. If, for example,
  128. the build produced PPC binaries then there is a problem.
  129. - :ref:`ref-classes-testimage`: This class
  130. performs runtime testing of images after they are built. The tests
  131. are usually used with :doc:`QEMU </dev-manual/qemu>`
  132. to boot the images and check the combined runtime result boot
  133. operation and functions. However, the test can also use the IP
  134. address of a machine to test.
  135. - :ref:`ptest <test-manual/ptest:testing packages with ptest>`:
  136. Runs tests against packages produced during the build for a given
  137. piece of software. The test allows the packages to be run within a
  138. target image.
  139. - ``oe-selftest``: Tests combinations of BitBake invocations. These tests
  140. operate outside the OpenEmbedded build system itself. The
  141. ``oe-selftest`` can run all tests by default or can run selected
  142. tests or test suites.
  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. The Yocto Project's main :yocto_ab:`Autobuilder <>` publicly tests each Yocto
  148. Project release's code in the :oe_git:`openembedded-core </openembedded-core>`,
  149. :yocto_git:`poky </poky>` and :oe_git:`bitbake </bitbake>` repositories. The
  150. testing occurs for both the current state of the "master" branch and also for
  151. submitted patches. Testing for submitted patches usually occurs in the
  152. in the "master-next" branch in the :yocto_git:`poky </poky>` repository.
  153. .. note::
  154. You can find all these branches in the
  155. :ref:`overview-manual/development-environment:yocto project source repositories`.
  156. Testing within these public branches ensures in a publicly visible way
  157. that all of the main supposed architectures and recipes in OE-Core
  158. successfully build and behave properly.
  159. Various features such as ``multilib``, sub architectures (e.g. ``x32``,
  160. ``poky-tiny``, ``musl``, ``no-x11`` and and so forth),
  161. ``bitbake-selftest``, and ``oe-selftest`` are tested as part of the QA
  162. process of a release. Complete testing and validation for a release
  163. takes the Autobuilder workers several hours.
  164. .. note::
  165. The Autobuilder workers are non-homogeneous, which means regular
  166. testing across a variety of Linux distributions occurs. The
  167. Autobuilder is limited to only testing QEMU-based setups and not real
  168. hardware.
  169. Finally, in addition to the Autobuilder's tests, the Yocto Project QA
  170. team also performs testing on a variety of platforms, which includes
  171. actual hardware, to ensure expected results.