From d9c33b2ea4c4a20afe2f000a6f193f20cbcc0f80 Mon Sep 17 00:00:00 2001 From: worldofpeace Date: Wed, 29 Apr 2020 20:32:06 -0400 Subject: [PATCH] nixos/doc/releases: update the docs as promised This goes through a recent example of 19.09 (because the workflow should be everchanging, so our example needs to be recent). Lots of changes, just read idk. --- nixos/doc/manual/development/releases.xml | 338 +++++++++++++--------- 1 file changed, 207 insertions(+), 131 deletions(-) diff --git a/nixos/doc/manual/development/releases.xml b/nixos/doc/manual/development/releases.xml index 8abc66dfec1..7932420e71b 100755 --- a/nixos/doc/manual/development/releases.xml +++ b/nixos/doc/manual/development/releases.xml @@ -8,24 +8,26 @@ Release process - Going through an example of releasing NixOS 17.09: + Going through an example of releasing NixOS 19.09:
One month before the beta - + - Send an email to the nix-devel mailinglist as a warning about upcoming - beta "feature freeze" in a month. + Create an announcement on Discourse as a warning about upcoming beta feature freeze in a month. See this post as an example. - Discuss with Eelco Dolstra and the community (via IRC, ML) about what - will reach the deadline. Any issue or Pull Request targeting the release - should be included in the release milestone. + Discuss with Eelco Dolstra and the community (via IRC, ML) about what will reach the deadline. Any issue or Pull Request targeting the release should be included in the release milestone. + + + + + Remove attributes that we know we will not be able to support, especially if there is a stable alternative. E.g. Check that our Linux kernels’ projected end-of-life are after our release projected end-of-life. @@ -34,113 +36,127 @@
At beta release time - + - Create - an issue for tracking Zero Hydra Failures progress. ZHF is an effort to - get build failures down to zero. + From the master branch run: + + + + + +# git checkout -b release-19.09 + + + + + + Bump the system.defaultChannel attribute in nixos/modules/misc/version.nix - git tag -a -s -m "Release 17.09-beta" 17.09-beta - && git push origin 17.09-beta + Update versionSuffix in nixos/release.nix + + + + To get the commit count, use the following command: + + + +git rev-list --count release-19.09 + + + - From the master branch run git checkout -b - release-17.09. + Edit changelog at nixos/doc/manual/release-notes/rl-1909.xml. - - - - - Make sure a channel is created at https://nixos.org/channels/. - - - - - - Bump the system.defaultChannel attribute in - nixos/modules/misc/version.nix - - - - - - Update versionSuffix in - nixos/release.nix, use - git rev-list --count 17.09-beta - to get the commit count. - - - - - echo -n "18.03" > .version on master. - - - - - - Pick a new name for the unstable branch. - - - - - Create a new release notes file for the upcoming release + 1, in this - case rl-1803.xml. - - - - - Create two Hydra jobsets: release-17.09 and release-17.09-small with - stableBranch set to false. - - - - - Remove attributes that we know we will not be able to support, - especially if there is a stable alternative. E.g. Check that our - Linux kernels' - - projected end-of-life are after our release projected - end-of-life - - - - - Edit changelog at - nixos/doc/manual/release-notes/rl-1709.xml (double - check desktop versions are noted) - - + - Get all new NixOS modules git diff - release-17.03..release-17.09 nixos/modules/module-list.nix|grep - ^+ + Get all new NixOS modules: + + +git diff release-19.03..release-19.09 nixos/modules/module-list.nix| grep ^+ + + - Note systemd, kernel, glibc and Nix upgrades. + Note systemd, kernel, glibc, desktop environment, and Nix upgrades. - + + + Tag the release: + + + + + +# git tag --annotate --message="Release 19.09-beta" 19.09-beta +# git push upstream 19.09-beta + + + + + + On the master branch, increment the .version file + + + + + +# echo -n "20.03" > .version + + + + + + Update codeName in lib/trivial.nix This will be the name for the next release. + + + + + Create a new release notes file for the upcoming release + 1, in our case this is rl-2003.xml. + + + + + Contact the infrastructure team to create the necessary Hydra Jobsets. + + + + + Create a channel at https://nixos.org/channels by creating a PR to nixos-org-configurations, changing channels.nix + + + + + Get all Hydra jobsets for the release to have their first evaluation. + + + + + Create an issue for tracking Zero Hydra Failures progress. ZHF is an effort to get build failures down to zero. + + +
During Beta - + - Monitor the master branch for bugfixes and minor updates and cherry-pick - them to the release branch. + Monitor the master branch for bugfixes and minor updates and cherry-pick them to the release branch. @@ -149,7 +165,7 @@
Before the final release - + Re-check that the release notes are complete. @@ -157,21 +173,17 @@ - Release Nix (currently only Eelco Dolstra can do that). - - Make sure fallback is updated. + Release Nix (currently only Eelco Dolstra can do that). Make sure fallback is updated. - - Update README.md with new stable NixOS version information. + Update README.md with new stable NixOS version information. - Change stableBranch to true in Hydra and wait for - the channel to update. + Change stableBranch to true in Hydra and wait for the channel to update. @@ -180,76 +192,140 @@
At final release time - + - git tag -s -a -m "Release 15.09" 15.09 + Update Chapter 4. Upgrading NixOS section of the manual to match new stable release version. - Update "Chapter 4. Upgrading NixOS" section of the manual to match - new stable release version. + Update rl-1909.xml with the release date. - Update the - NIXOS_SERIES - in the - nixos-homepage - repository. + Tag the final release + + + +# git tag --annotate --message="Release 19.09" 19.09 +# git push upstream 19.09 + + + + + + Update nixos-homepage for the release. + + + + + Update NIXOS_SERIES in the Makefile. + + + + + Update nixos-release.tt with the new NixOS version. + + + + + Update the flake.nix input released-nixpkgs to 19.09. + + + + + Run ./update.sh (this updates flake.lock to updated channel). + + + + + Add a compressed version of the NixOS logo for 19.09. + + + + + Compose a news item for the website RSS feed. + + + + - Get number of commits for the release: git log - release-14.04..release-14.12 --format=%an|wc -l + Create a new topic on the Discourse instance to announce the release. + + + + You should include the following information: - Number of commits for the release: bash git log release-19.03..release-19.09 --format=%an | wc -l + + + - Commits by contributor: git log release-14.04..release-14.12 - --format=%an|sort|uniq -c|sort -rn - - - - - Create a new topic on the - Discourse instance to announce the release with the above information. - Best to check how previous email was formulated to see what needs to be - included. + Commits by contributor: + + +git shortlog -sn release-19.03..release-19.09 + + + + Best to check how the previous post was formulated to see what needs to be included. +
-
+
Release Management Team + - For each release there are two release managers. After each release the - release manager having managed two releases steps down and the release - management team of the last release appoints a new release manager. + For each release there are two release managers. After each release the release manager having managed two releases steps down and the release management team of the last release appoints a new release manager. + - This makes sure a release management team always consists of one release - manager who already has managed one release and one release manager being - introduced to their role, making it easier to pass on knowledge and - experience. + This makes sure a release management team always consists of one release manager who already has managed one release and one release manager being introduced to their role, making it easier to pass on knowledge and experience. + - Release managers for the current NixOS release are tracked by GitHub team - @NixOS/nixos-release-managers. + Release managers for the current NixOS release are tracked by GitHub team @NixOS/nixos-release-managers. + - A release manager's role and responsibilities are: + A release manager’s role and responsibilities are: + - manage the release process - start discussions about features and changes for a given release - create a roadmap - release in cooperation with Eelco Dolstra - decide which bug fixes, features, etc... get backported after a release + + + manage the release process + + + + + start discussions about features and changes for a given release + + + + + create a roadmap + + + + + release in cooperation with Eelco Dolstra + + + + + decide which bug fixes, features, etc… get backported after a release + +