ref-release-process.xml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  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. <chapter id='ref-release-process'>
  5. <title>Yocto Project Releases and the Stable Release Process</title>
  6. <para>
  7. The Yocto Project release process is predictable and consists of both
  8. major and minor (point) releases.
  9. This brief chapter provides information on how releases are named, their
  10. life cycle, and their stability.
  11. </para>
  12. <section id='major-and-minor-release-cadence'>
  13. <title>Major and Minor Release Cadence</title>
  14. <para>
  15. The Yocto Project delivers major releases (e.g. &DISTRO;) using a six
  16. month cadence roughly timed each April and October of the year.
  17. Following are examples of some major YP releases with their codenames
  18. also shown.
  19. See the
  20. "<link linkend='major-release-codenames'>Major Release Codenames</link>"
  21. section for information on codenames used with major releases.
  22. <literallayout class='monospaced'>
  23. 2.2 (Morty)
  24. 2.1 (Krogoth)
  25. 2.0 (Jethro)
  26. </literallayout>
  27. While the cadence is never perfect, this timescale facilitates
  28. regular releases that have strong QA cycles while not overwhelming
  29. users with too many new releases.
  30. The cadence is predictable and avoids many major holidays in various
  31. geographies.
  32. </para>
  33. <para>
  34. The Yocto project delivers minor (point) releases on an unscheduled
  35. basis and are usually driven by the accumulation of enough significant
  36. fixes or enhancements to the associated major release.
  37. Following are some example past point releases:
  38. <literallayout class='monospaced'>
  39. 2.1.1
  40. 2.1.2
  41. 2.2.1
  42. </literallayout>
  43. The point release indicates a point in the major release branch where
  44. a full QA cycle and release process validates the content of the new
  45. branch.
  46. <note>
  47. Realize that there can be patches merged onto the stable release
  48. branches as and when they become available.
  49. </note>
  50. </para>
  51. </section>
  52. <section id='major-release-codenames'>
  53. <title>Major Release Codenames</title>
  54. <para>
  55. Each major release receives a codename that identifies the release in
  56. the
  57. <ulink url='&YOCTO_DOCS_OM_URL;#yocto-project-repositories'>Yocto Project Source Repositories</ulink>.
  58. The concept is that branches of
  59. <link linkend='metadata'>Metadata</link>
  60. with the same codename are likely to be compatible and thus
  61. work together.
  62. <note>
  63. Codenames are associated with major releases because a Yocto
  64. Project release number (e.g. &DISTRO;) could conflict with
  65. a given layer or company versioning scheme.
  66. Codenames are unique, interesting, and easily identifiable.
  67. </note>
  68. Releases are given a nominal release version as well but the codename
  69. is used in repositories for this reason.
  70. You can find information on Yocto Project releases and codenames at
  71. <ulink url='https://wiki.yoctoproject.org/wiki/Releases'></ulink>.
  72. </para>
  73. </section>
  74. <section id='stable-release-process'>
  75. <title>Stable Release Process</title>
  76. <para>
  77. Once released, the release enters the stable release process at which
  78. time a person is assigned as the maintainer for that stable release.
  79. This maintainer monitors activity for the release by investigating
  80. and handling nominated patches and backport activity.
  81. Only fixes and enhancements that have first been applied on the
  82. "master" branch (i.e. the current, in-development branch) are
  83. considered for backporting to a stable release.
  84. <note>
  85. The current Yocto Project policy regarding backporting is to
  86. consider bug fixes and security fixes only.
  87. Policy dictates that features are not backported to a stable
  88. release.
  89. This policy means generic recipe version upgrades are unlikely to
  90. be accepted for backporting.
  91. The exception to this policy occurs when a strong reason exists
  92. such as the fix happens to also be the preferred upstream approach.
  93. </note>
  94. </para>
  95. <para>
  96. Stable release branches have strong maintenance for about a year after
  97. their initial release.
  98. Should significant issues be found for any release regardless of its
  99. age, fixes could be backported to older releases.
  100. For issues that are not backported given an older release,
  101. Community LTS trees and branches exist where
  102. community members share patches for older releases.
  103. However, these types of patches do not go through the same release
  104. process as do point releases.
  105. You can find more information about stable branch maintenance at
  106. <ulink url='https://wiki.yoctoproject.org/wiki/Stable_branch_maintenance'></ulink>.
  107. </para>
  108. </section>
  109. <section id='testing-and-quality-assurance'>
  110. <title>Testing and Quality Assurance</title>
  111. <para>
  112. Part of the Yocto Project development and release process is quality
  113. assurance through the execution of test strategies.
  114. Test strategies provide the Yocto Project team a way to ensure a
  115. release is validated.
  116. Additionally, because the test strategies are visible to you as a
  117. developer, you can validate your projects.
  118. This section overviews the available test infrastructure used in the
  119. Yocto Project.
  120. For information on how to run available tests on your projects, see the
  121. "<ulink url='&YOCTO_DOCS_DEV_URL;#performing-automated-runtime-testing'>Performing Automated Runtime Testing</ulink>"
  122. section in the Yocto Project Development Tasks Manual.
  123. </para>
  124. <para>
  125. The QA/testing infrastructure is woven into the project to the point
  126. where core developers take some of it for granted.
  127. The infrastructure consists of the following pieces:
  128. <itemizedlist>
  129. <listitem><para>
  130. <filename>bitbake-selftest</filename>:
  131. A standalone command that runs unit tests on key pieces of
  132. BitBake and its fetchers.
  133. </para></listitem>
  134. <listitem><para>
  135. <link linkend='ref-classes-sanity'><filename>sanity.bbclass</filename></link>:
  136. This automatically included class checks the build environment
  137. for missing tools (e.g. <filename>gcc</filename>) or common
  138. misconfigurations such as
  139. <link linkend='var-MACHINE'><filename>MACHINE</filename></link>
  140. set incorrectly.
  141. </para></listitem>
  142. <listitem><para>
  143. <link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>:
  144. This class checks the generated output from builds for sanity.
  145. For example, if building for an ARM target, did the build
  146. produce ARM binaries.
  147. If, for example, the build produced PPC binaries then there
  148. is a problem.
  149. </para></listitem>
  150. <listitem><para>
  151. <link linkend='ref-classes-testimage*'><filename>testimage.bbclass</filename></link>:
  152. This class performs runtime testing of images after they are
  153. built.
  154. The tests are usually used with
  155. <ulink url='&YOCTO_DOCS_DEV_URL;#dev-manual-qemu'>QEMU</ulink>
  156. to boot the images and check the combined runtime result
  157. boot operation and functions.
  158. However, the test can also use the IP address of a machine to
  159. test.
  160. </para></listitem>
  161. <listitem><para>
  162. <ulink url='&YOCTO_DOCS_DEV_URL;#testing-packages-with-ptest'><filename>ptest</filename></ulink>:
  163. Runs tests against packages produced during the build for a
  164. given piece of software.
  165. The test allows the packages to be be run within a target
  166. image.
  167. </para></listitem>
  168. <listitem><para>
  169. <filename>oe-selftest</filename>:
  170. Tests combination BitBake invocations.
  171. These tests operate outside the OpenEmbedded build system
  172. itself.
  173. The <filename>oe-selftest</filename> can run all tests by
  174. default or can run selected tests or test suites.
  175. <note>
  176. Running <filename>oe-selftest</filename> requires
  177. host packages beyond the "Essential" grouping.
  178. See the
  179. "<link linkend='required-packages-for-the-build-host'>Required Packages for the Build Host</link>"
  180. section for more information.
  181. </note>
  182. </para></listitem>
  183. </itemizedlist>
  184. </para>
  185. <para>
  186. Originally, much of this testing was done manually.
  187. However, significant effort has been made to automate the tests so
  188. that more people can use them and the Yocto Project development team
  189. can run them faster and more efficiently.
  190. </para>
  191. <para>
  192. The Yocto Project's main Autobuilder
  193. (<filename>autobuilder.yoctoproject.org</filename>) publicly tests
  194. each Yocto Project release's code in the
  195. <link linkend='oe-core'>OE-Core</link>, Poky, and BitBake
  196. repositories.
  197. The testing occurs for both the current state of the
  198. "master" branch and also for submitted patches.
  199. Testing for submitted patches usually occurs in the
  200. "ross/mut" branch in the <filename>poky-contrib</filename> repository
  201. (i.e. the master-under-test branch) or in the "master-next" branch
  202. in the <filename>poky</filename> repository.
  203. <note>
  204. You can find all these branches in the Yocto Project
  205. <ulink url='&YOCTO_DOCS_OM_URL;#source-repositories'>Source Repositories</ulink>.
  206. </note>
  207. Testing within these public branches ensures in a publicly visible way
  208. that all of the main supposed architectures and recipes in OE-Core
  209. successfully build and behave properly.
  210. </para>
  211. <para>
  212. Various features such as <filename>multilib</filename>, sub
  213. architectures (e.g. <filename>x32</filename>,
  214. <filename>poky-tiny</filename>, <filename>musl</filename>,
  215. <filename>no-x11</filename> and and so forth),
  216. <filename>bitbake-selftest</filename>, and
  217. <filename>oe-selftest</filename> are tested as part of
  218. the QA process of a release.
  219. Complete testing and validation for a release takes the Autobuilder
  220. workers several hours.
  221. <note>
  222. The Autobuilder workers are non-homogeneous, which means regular
  223. testing across a variety of Linux distributions occurs.
  224. The Autobuilder is limited to only testing QEMU-based setups and
  225. not real hardware.
  226. </note>
  227. </para>
  228. <para>
  229. Finally, in addition to the Autobuilder's tests, the Yocto Project
  230. QA team also performs testing on a variety of platforms, which includes
  231. actual hardware, to ensure expected results.
  232. </para>
  233. </section>
  234. </chapter>
  235. <!--
  236. vim: expandtab tw=80 ts=4
  237. -->