Going through an example of releasing NixOS 19.09:
-
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.
-
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.
- From the master branch run:
# git checkout -b release-19.09
To get the commit count, use the following command:
git rev-list --count release-19.09
-
Edit changelog at
nixos/doc/manual/release-notes/rl-1909.xml
.- Get all new NixOS modules:
git diff release-19.03..release-19.09 nixos/modules/module-list.nix| grep ^+
- Note systemd, kernel, glibc, desktop environment, and Nix upgrades.
-
Tag the release:
# git tag -a -s -m "Release 19.09-beta" 19.09-beta
# git push upstream 19.09-beta
# echo -n "20.03" > .version
-
Update
codeName
inlib/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.
-
Get all Hydra jobsets for the release to have their first evaluation.
- Monitor the master branch for bugfixes and minor updates and cherry-pick them to the release branch.
-
Re-check that the release notes are complete.
-
Release Nix (currently only Eelco Dolstra can do that). Make sure fallback is updated.
-
Change
stableBranch
totrue
in Hydra and wait for the channel to update.
-
Update "Chapter 4. Upgrading NixOS" section of the manual to match new stable release version.
-
Update
rl-1909.xml
with the release date. -
Tag the final release
# git tag -a -m "Release 19.09" 19.09
# git push upstream 19.09
-
Update nixos-homepage for the release.
- Update
NIXOS_SERIES
in theMakefile
. - Update
nixos-release.tt
with the new NixOS version. - Update the
flake.nix
inputreleased-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.
- Update
-
Create a new topic on the Discourse instance to announce the release.
You should include the following information:
- Number of commits for the release:
git log release-19.03..release-19.09 --format=%an | wc -l
- 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.
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.
Release managers for the current NixOS release are tracked by GitHub
team
@NixOS/nixos-release-managers
.
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
Date | Event |
---|---|
2016-07-25 | Send email to nix-dev about upcoming branch-off |
2016-09-01 | release-16.09 branch and corresponding jobsets are created, change freeze |
2016-09-30 | NixOS 16.09 released |