release-process.rst 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  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. Following are examples of some major YP releases with their codenames
  14. also shown. See the "`Major Release
  15. Codenames <#major-release-codenames>`__" section for information on
  16. codenames used with major releases.
  17. - 2.2 (Morty)
  18. - 2.1 (Krogoth)
  19. - 2.0 (Jethro)
  20. While the cadence is never perfect, this timescale facilitates
  21. regular releases that have strong QA cycles while not overwhelming users
  22. with too many new releases. The cadence is predictable and avoids many
  23. major holidays in various geographies.
  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:
  28. - 2.1.1
  29. - 2.1.2
  30. - 2.2.1
  31. The point release
  32. indicates a point in the major release branch where a full QA cycle and
  33. release process validates the content of the new branch.
  34. .. note::
  35. Realize that there can be patches merged onto the stable release
  36. branches as and when they become available.
  37. Major Release Codenames
  38. =======================
  39. Each major release receives a codename that identifies the release in
  40. the :ref:`overview-manual/development-environment:yocto project source repositories`.
  41. The concept is that branches of :term:`Metadata` with the same
  42. codename are likely to be compatible and thus work together.
  43. .. note::
  44. Codenames are associated with major releases because a Yocto Project
  45. release number (e.g. DISTRO) could conflict with a given layer or
  46. company versioning scheme. Codenames are unique, interesting, and
  47. easily identifiable.
  48. Releases are given a nominal release version as well but the codename is
  49. used in repositories for this reason. You can find information on Yocto
  50. Project releases and codenames at
  51. :yocto_wiki:`/Releases`.
  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 a strong reason exists such as
  67. the fix happens to also be the preferred upstream approach.
  68. Stable release branches have strong maintenance for about a year after
  69. their initial release. Should significant issues be found for any
  70. release regardless of its age, fixes could be backported to older
  71. releases. For issues that are not backported given an older release,
  72. Community LTS trees and branches exist where community members share
  73. patches for older releases. However, these types of patches do not go
  74. through the same release process as do point releases. You can find more
  75. information about stable branch maintenance at
  76. :yocto_wiki:`/Stable_branch_maintenance`.
  77. Testing and Quality Assurance
  78. =============================
  79. Part of the Yocto Project development and release process is quality
  80. assurance through the execution of test strategies. Test strategies
  81. provide the Yocto Project team a way to ensure a release is validated.
  82. Additionally, because the test strategies are visible to you as a
  83. developer, you can validate your projects. This section overviews the
  84. available test infrastructure used in the Yocto Project. For information
  85. on how to run available tests on your projects, see the
  86. ":ref:`dev-manual/common-tasks:performing automated runtime testing`"
  87. section in the Yocto Project Development Tasks Manual.
  88. The QA/testing infrastructure is woven into the project to the point
  89. where core developers take some of it for granted. The infrastructure
  90. consists of the following pieces:
  91. - ``bitbake-selftest``: A standalone command that runs unit tests on
  92. key pieces of BitBake and its fetchers.
  93. - :ref:`sanity.bbclass <ref-classes-sanity>`: This automatically
  94. included class checks the build environment for missing tools (e.g.
  95. ``gcc``) or common misconfigurations such as
  96. :term:`MACHINE` set incorrectly.
  97. - :ref:`insane.bbclass <ref-classes-insane>`: This class checks the
  98. generated output from builds for sanity. For example, if building for
  99. an ARM target, did the build produce ARM binaries. If, for example,
  100. the build produced PPC binaries then there is a problem.
  101. - :ref:`testimage.bbclass <ref-classes-testimage*>`: This class
  102. performs runtime testing of images after they are built. The tests
  103. are usually used with :doc:`QEMU </dev-manual/qemu>`
  104. to boot the images and check the combined runtime result boot
  105. operation and functions. However, the test can also use the IP
  106. address of a machine to test.
  107. - :ref:`ptest <dev-manual/common-tasks:testing packages with ptest>`:
  108. Runs tests against packages produced during the build for a given
  109. piece of software. The test allows the packages to be be run within a
  110. target image.
  111. - ``oe-selftest``: Tests combination BitBake invocations. These tests
  112. operate outside the OpenEmbedded build system itself. The
  113. ``oe-selftest`` can run all tests by default or can run selected
  114. tests or test suites.
  115. .. note::
  116. Running ``oe-selftest`` requires host packages beyond the "Essential"
  117. grouping. See the :ref:`ref-manual/system-requirements:required packages for the build host`
  118. section for more information.
  119. Originally, much of this testing was done manually. However, significant
  120. effort has been made to automate the tests so that more people can use
  121. them and the Yocto Project development team can run them faster and more
  122. efficiently.
  123. The Yocto Project's main Autobuilder (&YOCTO_AB_URL;)
  124. publicly tests each Yocto Project release's code in the
  125. :term:`OpenEmbedded-Core (OE-Core)`, Poky, and BitBake repositories. The testing
  126. occurs for both the current state of the "master" branch and also for
  127. submitted patches. Testing for submitted patches usually occurs in the
  128. "ross/mut" branch in the ``poky-contrib`` repository (i.e. the
  129. master-under-test branch) or in the "master-next" branch in the ``poky``
  130. repository.
  131. .. note::
  132. You can find all these branches in the Yocto Project
  133. Source Repositories
  134. .
  135. Testing within these public branches ensures in a publicly visible way
  136. that all of the main supposed architectures and recipes in OE-Core
  137. successfully build and behave properly.
  138. Various features such as ``multilib``, sub architectures (e.g. ``x32``,
  139. ``poky-tiny``, ``musl``, ``no-x11`` and and so forth),
  140. ``bitbake-selftest``, and ``oe-selftest`` are tested as part of the QA
  141. process of a release. Complete testing and validation for a release
  142. takes the Autobuilder workers several hours.
  143. .. note::
  144. The Autobuilder workers are non-homogeneous, which means regular
  145. testing across a variety of Linux distributions occurs. The
  146. Autobuilder is limited to only testing QEMU-based setups and not real
  147. hardware.
  148. Finally, in addition to the Autobuilder's tests, the Yocto Project QA
  149. team also performs testing on a variety of platforms, which includes
  150. actual hardware, to ensure expected results.