docs/develop/release: add the info from the ReleaseCookbook Trac wiki page
The corresponding Trac wiki page can be deleted once this is merged. Some of this information is a little out of date, help is welcome on updating it. Change-Id: I9157b140bcb5de3fed3c95d994745b5a1cbee1f6 Reviewed-on: https://review.haiku-os.org/c/haiku/+/5477 Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org> Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
This commit is contained in:
parent
46fdf97dea
commit
264f77da03
@ -1,25 +1,40 @@
|
|||||||
Release engineering
|
Release engineering
|
||||||
===================
|
===================
|
||||||
|
|
||||||
To forge a successful stable release of the Haiku operating system, several important tasks must be accomplished. These steps are time tested as a best roadmap to draft a successful release of Haiku.
|
To forge a successful stable release of the Haiku operating system, several important tasks must be
|
||||||
|
accomplished. These steps are time tested as a best roadmap to draft a successful release of Haiku.
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
|
||||||
|
milestones
|
||||||
|
|
||||||
Important first steps
|
Important first steps
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
* Review blockers for the next release in [Trac](https://dev.haiku-os.org)
|
* Review blockers for the next release in `Trac <https://dev.haiku-os.org>`_
|
||||||
* A minimum of 25% of the individuals in the [contributors group](https://review.haiku-os.org/admin/groups/23fa29f291e2dd5d41452202147d038f020fc8db,members) should reach concensus of the need for a stable release
|
* Active members of the `contributors group <https://review.haiku-os.org/admin/groups/23fa29f291e2dd5d41452202147d038f020fc8db,members>`_ should reach concensus on the need for a stable release
|
||||||
* Over time this may change to a time-based stable release schedule.
|
* We try to have a release every year, but blocker tickets can prevent this from happening
|
||||||
|
* It's difficult to commit to strictly time-based releases because the available time of unpaid developers is unpredictable
|
||||||
* Community nomination of a Release Coordinator
|
* Community nomination of a Release Coordinator
|
||||||
* Should be someone from the contributors group
|
* Should be someone from the contributors group
|
||||||
* Should have visibility of most aspects of Haiku
|
* Should have visibility of most aspects of Haiku
|
||||||
* Should have good coordination and communication skills
|
* Should have good coordination and communication skills
|
||||||
* Generally occurs via the mailing list haiku-development
|
* Generally occurs via the haiku-development mailing list
|
||||||
* Timeline proposals are proposed via the haiku-development mailing list
|
* Timeline proposals are proposed via the haiku-development mailing list
|
||||||
|
|
||||||
|
General Rules
|
||||||
|
-------------
|
||||||
|
|
||||||
|
* Don't rush the release. Better delay it a bit and take the time to make sure everything is ok.
|
||||||
|
* Make sure the final image is really well tested.
|
||||||
|
* Start planning early. Getting the release ready takes time. Waiting until a new release is urgent is a bad idea.
|
||||||
|
* There will be another release. Maybe some big changes are too risky to integrate now, and should wait until the next release.
|
||||||
|
|
||||||
Forming a timeline
|
Forming a timeline
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
An important aspect of drafting a release is forming a timeline. The Release Coordinator's role is to drive Haiku towards this release date.
|
An important aspect of drafting a release is forming a timeline. The Release Coordinator's role is
|
||||||
|
to drive Haiku towards this release date.
|
||||||
|
|
||||||
* Final date for enhancements in (RELEASE)
|
* Final date for enhancements in (RELEASE)
|
||||||
* Branch buildtools for (RELEASE)
|
* Branch buildtools for (RELEASE)
|
||||||
@ -37,6 +52,3 @@ An important aspect of drafting a release is forming a timeline. The Release Co
|
|||||||
Release dates can slide, it's ok.
|
Release dates can slide, it's ok.
|
||||||
We just try to slide pragmatically (+1 week because of X,Y,Z)
|
We just try to slide pragmatically (+1 week because of X,Y,Z)
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
|
|
||||||
milestones
|
|
||||||
|
@ -1,41 +1,59 @@
|
|||||||
Critical Milestones
|
Critical Milestones
|
||||||
===================
|
===================
|
||||||
|
|
||||||
|
This page documents the steps needed during a release.
|
||||||
|
|
||||||
Community Concensus
|
Community Concensus
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
* Determine a release is needed
|
* Determine a release is needed
|
||||||
* Gain support in the community
|
* Gain support in the community
|
||||||
|
* Review the list of Trac tickets in the milestone. There should be no blockers and ideally no critical tickets
|
||||||
|
* Decide if some of the tickets can be lowered in priority or moved to the next release
|
||||||
* Raise release proposal on mailing list (haiku-development)
|
* Raise release proposal on mailing list (haiku-development)
|
||||||
* Elect Release Coordinator
|
* Select Release Coordinator
|
||||||
* Plan timeline (which should be made up of milestones below)
|
* Plan timeline (which should be made up of milestones below)
|
||||||
* Allow one week RFC time for comments
|
* Allow one week RFC time for comments
|
||||||
|
|
||||||
|
Each of the steps below should be announced on the mailing list to remind everyone where we're at.
|
||||||
|
|
||||||
Scramle. Enhancement Deadline
|
Scramle. Enhancement Deadline
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
**Time:** ~ 1 week
|
**Time:** ~ 1 week
|
||||||
|
|
||||||
* Roughly one week for people to finish up their enhancements for *(RELEASE)*
|
* Roughly one week for people to finish up their enhancements for *(RELEASE)*
|
||||||
* Should be announced on the mailing lists
|
* Avoid merging changes that break the API, so 3rd-party applications are ready to build with the API matching the release
|
||||||
|
* Decide if any haikuports packages should be added or removed from the release image
|
||||||
* Final ICU upgrades, webkit upgrades, etc.
|
* Final ICU upgrades, webkit upgrades, etc.
|
||||||
* Plan for release logo used in installer (always fun, lots of bikeshed)
|
* Plan for release logo used in installer (always fun, lots of bikeshed)
|
||||||
* Be working on release notes!
|
* Prepare this in advance if possible, if you want to change the logo, this is the worst time to do it.
|
||||||
|
* Set up the `Trac wiki pages <https://dev.haiku-os.org/wiki/R1/ReleaseRoadMap>`_ for the release
|
||||||
|
* Start writing or updating the release notes and press release
|
||||||
|
|
||||||
Branch
|
Branch
|
||||||
------
|
------
|
||||||
|
|
||||||
**Time:** ~ 1 week
|
**Time:** ~ 1 week
|
||||||
|
|
||||||
* **Sysadmin** Branch *(RELEASE)*, haiku, buildtools
|
* Update the version constants in master (example: hrev52295)
|
||||||
* **Sysadmin** Add *(RELEASE)* to CI/CD (Concourse)
|
* Branch haiku and buildtools (git push origin master:r1beta1)
|
||||||
* **Sysadmin** generate toolchain container for *(RELEASE)*
|
* Update the version constants in the branch (`example <https://git.haiku-os.org/haiku/commit/?h=r1beta1&id=b5c9e6620ee731bd33d8cb3ef6ac01749122b6b3>`_)
|
||||||
* **Sysadmin** begin Test Candidate builds for target architectures (x86_gcc2h, x86_64)
|
* Update copyright years in the `bootloader menu <https://git.haiku-os.org/haiku/tree/src/system/boot/platform/generic/text_menu.cpp#n212>`_
|
||||||
* **Sysadmin** Test Candidate (TC) builds should be clearly labeled and made available
|
* Tag the buildtools & point the branch to them (TODO)
|
||||||
* **Sysadmin** and **Release Coordinator** work in unison to merge bugfix patches to stable branches
|
* Disable serial debug output in bootloader and kernel config file (`example <https://git.haiku-os.org/haiku/commit/?h=r1beta1&id=81fb2084b01e87c15bdde507e024e2938af71272>`_)
|
||||||
* **Sysadmin** focuses on merging build fixes, etc
|
* Turn KDEBUG_LEVEL down to 1, for performance reasons (`example <https://git.haiku-os.org/haiku/commit/?h=r1beta1&id=6db6c0b275f684d0b25d49e87d5183e40c7cd4ec>`_)
|
||||||
* **Release Coordinator** focuses on reviewing bug fixes
|
* Update Haiku's main package repos to use the branch's repo (`example <https://git.haiku-os.org/haiku/commit/?h=r1beta1&id=ebd3fb55d9549247be65c4b62e3653f9bc1a7841>`_)
|
||||||
* Communication is key!
|
* Sysadmin tasks
|
||||||
|
* Symlink the release branch repository directory to master's (so that a hard branch can be done later) and update the package repos to point to it (`example <https://git.haiku-os.org/haiku/commit/?h=r1beta1&id=3d0db15a6f2963f011554f421611ee9c9b31c6f5>`_)
|
||||||
|
* Synchronize userguide and locale catalogs in the branch during the release stabilization phase
|
||||||
|
* Add *(RELEASE)* to CI/CD (Concourse)
|
||||||
|
* generate toolchain container for *(RELEASE)*
|
||||||
|
* begin Test Candidate builds for target architectures (x86_gcc2h, x86_64)
|
||||||
|
* Test Candidate (TC) builds should be clearly labeled and made available
|
||||||
|
* Merge important bug fixes from master on a case-by-case basis. Ideally the release coordinator should review most of the changes and decide if they go in
|
||||||
|
* Use Gerrit "cherry-pick" function to propose a change for inclusion in the release branch
|
||||||
|
* Only merge bug fixes and build fixes, no new features at this point (they can stay in master)
|
||||||
|
|
||||||
Testing
|
Testing
|
||||||
-------
|
-------
|
||||||
@ -43,19 +61,22 @@ Testing
|
|||||||
**Time:** ~ 2 weekes
|
**Time:** ~ 2 weekes
|
||||||
|
|
||||||
* Agressively market Test Candidate builds for *(RELEASE)*
|
* Agressively market Test Candidate builds for *(RELEASE)*
|
||||||
* Bugs opened on trac under *new* version. Squash bugs
|
* Bugs should be opened on Trac under the *new* version (make sure it is available in Trac admin pages).
|
||||||
* **Release Coordinator** should be downright obnoxious about people testing TC images!
|
* **Release Coordinator** should be downright obnoxious about people testing TC images!
|
||||||
|
* Have people test on as much hardware as possible to find issues with drivers
|
||||||
|
|
||||||
Finalization
|
Finalization
|
||||||
------------
|
------------
|
||||||
|
|
||||||
**Time:** ~ 1 week
|
**Time:** ~ 1 week
|
||||||
|
|
||||||
* Everything going well? Produce Release Candidate images
|
* If everything is going well, produce Release Candidate images
|
||||||
|
* Make the branch officia (hrev36768)
|
||||||
* RC images all want to be *(RELEASE)*
|
* RC images all want to be *(RELEASE)*
|
||||||
* Any RC image can be renamed *(RELEASE)*
|
* Any RC image can be renamed *(RELEASE)*
|
||||||
* Ensure release notes are almost done.
|
* Ensure release notes and press release are almost done.
|
||||||
* MOAR Testing!
|
* MOAR Testing!
|
||||||
|
* When you have decided that an RC is actually the release, tag it in git
|
||||||
|
|
||||||
Distribution
|
Distribution
|
||||||
------------
|
------------
|
||||||
@ -67,9 +88,54 @@ Distribution
|
|||||||
* Generate Torrents, seed. Get a few other people to seed.
|
* Generate Torrents, seed. Get a few other people to seed.
|
||||||
* Place onto wasabi s3 under releases in final layout (be consistent!)
|
* Place onto wasabi s3 under releases in final layout (be consistent!)
|
||||||
* Move to releases onto IPFS, pin and use pinning services
|
* Move to releases onto IPFS, pin and use pinning services
|
||||||
|
* Prepare release-files-directory::
|
||||||
|
|
||||||
|
[release-name]
|
||||||
|
|--md5sums.txt (of compressed and uncompressed release-image-files)
|
||||||
|
|--release_notes_[release-name].txt
|
||||||
|
|--[release-image-files] (both as .zip and .tar.xz)
|
||||||
|
|--[release-image-files].torrent (of just the .zip's)
|
||||||
|
|--[release-name]/sources/ (all source archives should be .tar.xz)
|
||||||
|
|--haiku-[release-name]-src-[YYYY-MM-DD]
|
||||||
|
|--haiku-[release-name]-buildtools-src-[YYYY-MM-DD]
|
||||||
|
|--[all optional packages]
|
||||||
|
|
||||||
|
* rsync release-files-directory to http://haiku-files.org/files/releases/[release-name]
|
||||||
|
* rsync release-files-directory to baron:/srv/rsync/haiku-mirror-seed/releases/[release-name]/ (the 3rd-party rsync mirrors will automatically mirror the files)
|
||||||
* Give mirrors time to... mirror via rsync
|
* Give mirrors time to... mirror via rsync
|
||||||
|
* Tell Distrowatch: http://distrowatch.com/table.php?distribution=haiku (?)
|
||||||
|
* Update the freshmeat/freecode page: http://freecode.com/projects/haiku (mmu_man)
|
||||||
* Update website references.
|
* Update website references.
|
||||||
* Double check listed mirrors have release
|
* Double check listed mirrors have release
|
||||||
* Comment out any mirrors which don't have it (a few missing is fine)
|
* Comment out any mirrors which don't have it (a few missing is fine)
|
||||||
* Put release notes on proper place on website
|
* Put release notes on proper place on website
|
||||||
* Release!
|
* Release!
|
||||||
|
|
||||||
|
After the release
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
* Close the current milestone on Trac, move tickets to the next milestone
|
||||||
|
* Set a release date on the next milestone (a date long in the future, just to have it show first in the milestone list)
|
||||||
|
* Make the new "version" in Trac be the default for newly creatred tickets
|
||||||
|
* Update the Roadmap wiki page again with the final release date
|
||||||
|
* Prepare graphics for the download page: stamp, ladybugs, cd/dvd graphics
|
||||||
|
|
||||||
|
Website Pages to update:
|
||||||
|
|
||||||
|
* Official Article
|
||||||
|
* http://www.haiku-os.org/get-haiku
|
||||||
|
* http://www.haiku-os.org/get-haiku/release-notes
|
||||||
|
* http://www.haiku-os.org/get-haiku/installation-guide
|
||||||
|
* http://www.haiku-os.org/get-haiku/burn-cd
|
||||||
|
* http://www.haiku-os.org/guides/making_haiku_usb_stick
|
||||||
|
* http://www.haiku-os.org/slideshows/haiku-tour
|
||||||
|
* http://www.haiku-os.org/docs/userguide/en/contents.html -- sync with branch or tag.
|
||||||
|
|
||||||
|
Updating download logo for website front page:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo bash
|
||||||
|
cd /srv/www/drupal/haiku-os.org/themes/shijin/haiku-images
|
||||||
|
mv bg-download-box.png GET-HAIKU-download-box-r1a1.png
|
||||||
|
cp GET-HAIKU-download-box-r1a2.png bg-download-box.png
|
||||||
|
Loading…
x
Reference in New Issue
Block a user