Yocto Release Engineering: Difference between revisions

From Yocto Project
Jump to navigationJump to search
mNo edit summary
 
(17 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Yocto Linux Release Engineering Procedures ==
== Yocto Project Release Engineering ==


This document describes release engineering procedures for the Yocto Linux project.  
Welcome to Yocto Project Release Engineering.


While this is intended to be a living document, this process is becoming more stable now that we're entering M3. Further changes will be considered if they are accompanied with strong reasoning and evidence of improvement.
=== Processes ===


== Naming Conventions ==
* [[Yocto Project Release Process]]
* [[Yocto Project Release Checklist]]
* [[Uninative Release Process]]
* [[Third_Party_BSP_Release_Process | Third Party BSP Release Guidelines]]


Official/public releases will use the following scheme: '''M.m.p'''
=== Conventions ===


* M = major release number
* [[Yocto Project Tagging Conventions]]
* m = minor release number
* [[Yocto Project Branch Conventions]]
* p = minor rev release number


Major release number changes imply compatibility changes with previous releases. Minor release number changes imply significant changes up to, but not including compatibility changes. Minor rev number changes are for minor issues such as simple bugfixes, security updates, etc.
=== Resources ===


Nightly releases will be named using the following scheme: '''image-name-M.m.p-date-buildnum.extension''', where M.m.p is the release number, where date is the datestamp of the build, e.g, 20100715, and buildnum is a build counter, e.g, 1, 2, 3, in case more than one build is generated the same day.
* [[The Yocto Autobuilder]]
* [[Frequently Asked Release Engineering Questions]]
* [[Frequently Asked Yocto Autobuilder Questions]]


Milestone releases will be named using the following scheme: '''image-name-M.m.p-date-milestonenum-buildnum.extension''', where the field definitions are the same as above with the addition of milestonenum, e.g. M3.
=== Best Known Methods ===


Our first public release was 0.9.0 in October 2010. Our second public release will be the 1.0.0 release in Spring 2011.
* [[BKM: Packaging a BSP for Release]]
* [[BKM: Releasing a source archive]]


== Types of Releases ==
=== Release Engineering Team ===


==== Internal/Nightly Releases ====
The Yocto Project's Release Engineering Team is comprised of Chee Yang Lee and Michael Halstead.
 
Nightly releases can be considered a "base class" of the release system. Weekly releases are generated directly from them, and otherwise the nightly release build status serves as a fundamental health status of the builds. Nightly releases are built directly from poky master and '''failures should be immediately addressed or the offending changes reverted'''.
 
==== Internal/QA Weekly Releases ====
 
These releases are the basic unit of internal progress for the Yocto project.
 
Every Wednesday (mid-day US Pacific time), the nightly build will generate a release which gets submitted to QA that evening (the start of China's Thursday).
 
If this weekly release passes initial testing from QA, the QA team will continue on to run their full weekly test suite.
 
If the weekly release does ''not'' pass initial testing from QA, the QA team will report this to the distro team and the distro team will focus on addressing these issues the next day. If the distro team lead believes these changes will resolve the reported issues, he/she will submit the nightly build for that day to QA again.
 
Weekly releases will be made available to the QA team via a web-accessible directory on the autobuilder. Within this directory, a tarball of all of the above components will be available to make downloading the release more convenient.
 
==== Internal/QA Milestone Releases ====
 
These releases are performed at the end of a milestone period and are used to measure our progress in delivering new features to Yocto Linux.
 
To generate a milestone release, a snapshot of poky master is taken and pushed to a builds/milestone branch. This branch then serves as a stabilization branch, allowing poky master to continue feature development. builds/milestone can then be improved by pulling in fixes via cherry-picking from poky master.
 
The Release Criteria are the Milestone requirements as defined in [[OSEL-1.0-schedule]]. If features are missing, a decision based on input from the management team needs to approve exceptions to the release criteria.
 
==== Official/public releases ====
 
These are the final, QA-tested, manager-approved releases of Yocto Linux which will '''WOW''' our customers and change the future of embedded Linux devices. Words can barely describe the awesomeness of these SDK and filesystem images!
 
== Release Components ==
 
Yocto Linux includes a number of software components to be included in each release. These include:
 
==== Distro Components ====
 
* Bootable QEMU images of minimal and sato for the following architectures: qemux86, qemux86-64, qemuarm, qemumips, qemuppc
** A bootable QEMU image consists of a kernel file, a kernel modules tarball, and root filesystem tarball
* Non-emulated machine targets (e.g, netbook, emenlow) will include appropriate images (e.g, live images) of minimal and sato.
 
==== SDK Components ====
 
* meta-toolchain tarballs for the following host/target combinations: i586/[arm|i586|mips|ppc|x86_64], x86_64/[arm|i586|mips|ppc|x86_64]
* Bootable SDK images for the following architectures: qemux86, qemux86-64, qemuarm, qemumips, qemuppc
* SDK plugins for the following IDEs: Anjuta, Eclipse
 
Currently the SDK plugins are not being generated with the remaining build output. Jessica and Scott will need to define a process for this that makes sense before public release. There are issues to be take into consideration such as how the plugins are distributed (Anjuta and Eclipse have their own plugin repositories, for example).
 
==== Other components ====
 
* gitinfo - a file which includes information about which commit the images were built from
* Changelog - a file which includes git log information between the last released version and the newly built version
* Bugfixes - a list of bugs, extracted from the Changelog, that were fixed between the last released version and the newly built version
 
== Official/public Release Procedures ==
 
=== Release Readiness Review ===
 
The Release Readiness Review is a sign-off process for official/public Yocto releases. This process reviews feature completeness, status of open defects, testing status, and verifies the status of documentation. From the release readiness review a decision is made on the status of launching an official release.
 
=== Technical Release Procedures ===
 
24 hours before the release is made public, the release images would be mirrored to external locations and allow time for the blog and mailing list announcements to be written. The final steps in releasing would be ready to be performed in a matter of seconds:
 
* Move the release directory from a staging area into the public web server area
* Push the web site update including new release information
* Post the pre-written release announcement on the blog and mailing lists
 
==== Steps to building a release for Yocto ====
 
Run the two milestone builds. This will create images at http://autobuilder.pokylinux.org/generate-release/<datestamp>/.
 
For post-Green releases, there is a release staging area that will be used to mirror the output before the files are released on the public web site. The release will be moved to this area for push to mirrors.
 
On release branch:
* Set DISTRO_VERSION in meta/conf/poky.conf
* Update handbook references to stable release (introduction.xml, master branch needs this too)
* Update version reference and updated date in handbook (poky-handbook.xml)
* git commit -a -m "Purple 3.2 Release"
* git tag -a purple-3.2 -m "Tag Purple 3.2"
* git archive purple-3.2 --prefix=purple-3.2/ | bzip2 > /tmp/poky-purple-3.2.tar.bz2 scp /tmp/poky-purple-3.2.tar.bz2 <server>:<path>/releases/poky-purple-3.2.tar.bz2
 
 
On master branch:
* Set DISTRO_VERSION in poky.conf to new version
* Update version reference and updated date in handbook (poky-handbook.xml)
* cd handbook
* make
* scp -r poky-handbook.tgz poky-handbook.html poky-handbook.pdf *.png *.xml *.css *.svg <server>:<path>/releases/purple-3.2/doc/
* scp -r poky-handbook.tgz poky-handbook.html *.png *.xml *.css *.svg <server>:<path>/releases/doc/
(or copy across by hand when remotely connected to machine?)
* Edit web pages (website is controlled from a git repo)
**support/index.php
**getit/index.php
**index.php
**poky-wp-theme/common-funcs.inc
**poky-wp-theme/front-page.php
* Post release announcement on Blog
* Post release announcement on mailing list

Latest revision as of 05:47, 15 March 2023