2024-08-20 13:13:24 -04:00
Release Cookbook
2022-07-08 09:01:49 -05:00
===================
2022-07-15 22:11:57 +02:00
This page documents the steps needed during a release.
2022-07-08 09:01:49 -05:00
Community Concensus
-------------------
* Determine a release is needed
* Gain support in the community
2022-07-15 22:11:57 +02:00
* 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
2022-07-08 09:01:49 -05:00
* Raise release proposal on mailing list (haiku-development)
2022-07-15 22:11:57 +02:00
* Select Release Coordinator
2022-07-08 09:01:49 -05:00
* Plan timeline (which should be made up of milestones below)
* Allow one week RFC time for comments
2022-07-15 22:11:57 +02:00
Each of the steps below should be announced on the mailing list to remind everyone where we're at.
2024-08-20 13:38:10 -04:00
Scramble. Enhancement Deadline
------------------------------
2022-07-08 09:01:49 -05:00
**Time:** ~ 1 week
* Roughly one week for people to finish up their enhancements for *(RELEASE)*
2022-07-15 22:11:57 +02:00
* 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
2022-07-08 09:01:49 -05:00
* Final ICU upgrades, webkit upgrades, etc.
* Plan for release logo used in installer (always fun, lots of bikeshed)
2022-07-15 22:11:57 +02:00
* 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
2022-07-08 09:01:49 -05:00
Branch
------
**Time:** ~ 1 week
2022-10-31 23:29:20 -04:00
* Update the version constants in master (`example: hrev52295 <https://git.haiku-os.org/haiku/commit/?h=hrev52295> `_ )
2022-07-15 22:11:57 +02:00
* Branch haiku and buildtools (git push origin master:r1beta1)
* Update the version constants in the branch (`example <https://git.haiku-os.org/haiku/commit/?h=r1beta1&id=b5c9e6620ee731bd33d8cb3ef6ac01749122b6b3> `_ )
* Update copyright years in the `bootloader menu <https://git.haiku-os.org/haiku/tree/src/system/boot/platform/generic/text_menu.cpp#n212> `_
2024-08-20 13:38:10 -04:00
* Disable serial debug output in bootloader and kernel config file (`example <https://git.haiku-os.org/haiku/commit/?h=r1beta5&id=9d0312eb00a75051275accf9967ddc1c64154334> `_ )
2022-07-15 22:11:57 +02:00
* Turn KDEBUG_LEVEL down to 1, for performance reasons (`example <https://git.haiku-os.org/haiku/commit/?h=r1beta1&id=6db6c0b275f684d0b25d49e87d5183e40c7cd4ec> `_ )
2022-11-08 12:45:03 -05:00
* Enable `` HAIKU_OFFICIAL_RELEASE `` (`example <https://git.haiku-os.org/haiku/commit/?h=r1beta1&id=ff2059f2bd001bba84b980617e9bdf4dc6a46799> `_ ), and update logos
2024-08-20 13:38:10 -04:00
* Update both package repos to use the branch's repos (`example <https://git.haiku-os.org/haiku/commit/?h=r1beta4&id=b9c0fea70a1fd7edc396e0e6992b77a7c5a3b4f8> `_ )
2022-11-04 14:59:59 -05:00
Configure CI/CD Pipelines
-------------------------
Once your code is branched, you can begin setting up CI/CD pipelines in concourse
* Bump the "last vs current" releases in CI/CD and deploy:
https://github.com/haiku/infrastructure/blob/master/concourse/deploy.sh#L29
* Run a build of *(RELEASE)* /toolchain-*(RELEASE)* to generate the intial toolchain containers
* Build each architecture first repo + image from the branch
2022-07-08 09:01:49 -05:00
Testing
-------
**Time:** ~ 2 weekes
2022-11-04 14:59:59 -05:00
* Begin building "Test Candidate" (TC0, TC1, TC2, etc) images for target architectures (x86_gcc2h, x86_64)
* Test Candidate (TC) builds should be clearly labeled and made available
2022-07-08 09:01:49 -05:00
* Agressively market Test Candidate builds for *(RELEASE)*
2022-07-15 22:11:57 +02:00
* Bugs should be opened on Trac under the *new* version (make sure it is available in Trac admin pages).
2022-07-08 09:01:49 -05:00
* **Release Coordinator** should be downright obnoxious about people testing TC images!
2024-08-20 13:38:10 -04:00
* Have people test on as much hardware as possible to find issues
2022-11-04 14:59:59 -05:00
* Use Gerrit "cherry-pick" function to propose a change for inclusion in the release branch
2022-07-08 09:01:49 -05:00
Finalization
------------
**Time:** ~ 1 week
2024-08-20 13:38:10 -04:00
* Synchronize **i18n** strings and userguide
* Produce **Release Candidate** images
* **Tag** the release candidate builds on the brach (rc0)
2022-07-15 22:11:57 +02:00
* Ensure release notes and press release are almost done.
2024-08-20 13:38:10 -04:00
* More testing!
2022-07-15 22:11:57 +02:00
* When you have decided that an RC is actually the release, tag it in git
2022-07-08 09:01:49 -05:00
Distribution
------------
**Time:** ~ 1 week
* You now have the release images in hand! (RCX is secretly the release)
* Keep it to yourself and don't tell people
* Generate Torrents, seed. Get a few other people to seed.
* Place onto wasabi s3 under releases in final layout (be consistent!)
* Move to releases onto IPFS, pin and use pinning services
2022-07-15 22:11:57 +02:00
* 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]
2024-08-20 13:38:10 -04:00
* rsync release-files-directory to /files/releases/[release-name]
2022-07-15 22:11:57 +02:00
* rsync release-files-directory to baron:/srv/rsync/haiku-mirror-seed/releases/[release-name]/ (the 3rd-party rsync mirrors will automatically mirror the files)
2022-07-08 09:01:49 -05:00
* Give mirrors time to... mirror via rsync
2022-07-15 22:11:57 +02:00
* Tell Distrowatch: http://distrowatch.com/table.php?distribution=haiku (?)
2022-07-08 09:01:49 -05:00
* Update website references.
* Double check listed mirrors have release
* Comment out any mirrors which don't have it (a few missing is fine)
* Put release notes on proper place on website
* Release!
2022-07-15 22:11:57 +02:00
2024-08-20 13:38:10 -04:00
Website Pages to update:
* https://www.haiku-os.org/ "Download" button
* https://www.haiku-os.org/get-haiku
* https://www.haiku-os.org/get-haiku/release-notes
* https://www.haiku-os.org/get-haiku/installation-guide
* https://www.haiku-os.org/get-haiku/burn-cd
* https://www.haiku-os.org/guides/making_haiku_usb_stick
* https://www.haiku-os.org/slideshows/haiku-tour
* https://www.haiku-os.org/docs/userguide/en/contents.html -- sync with branch or tag.
2022-07-15 22:11:57 +02:00
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