2
0
Fork 0
mirror of git://git.savannah.gnu.org/guix/maintenance.git synced 2023-12-14 03:33:04 +01:00
maintenance/doc/release.org
Ludovic Courtès b257c26806
doc: Minor update.
* doc/release.org: Do not mention Savannah news items.
2018-07-06 17:11:20 +02:00

5.1 KiB
Raw Blame History

Release Process for GNU Guix

This document describes the typical release process for Guix.

Update NEWS

Update the list fixed bugs, with bugs.gnu.org URL

Run "git log" and search for "^Fixes".

Update the list of new and updated packages

Run “make update-NEWS”.

This target needs requires a checkout of <git://git.savannah.gnu.org/guix/maintenance.git>, which is where we store the list of package/version pairs of each Guix release.

Commit the new list of packages in maintenance.git

Running “make update-NEWS” creates a data/packages-X.Y.Z.txt file in your maintenance.git checkout. Make sure to commit it:

git add data/packages-X.Y.Z.txt git commit -m "Data for X.Y.Z."

Prepare & upload tarball

Create branch 'version-X.Y.Z'

$ git branch version-X.Y.Z $ git checkout version-X.Y.Z

Add a Git tag

Create a signed Git tag, like this:

$ git tag -s -u MY-KEY -m "GNU Guix X.Y." vX.Y $ autoreconf # to update $(PACKAGE_VERSION)

The tag must be `vX.Y'. For the sake of consistency, always use "GNU Guix X.Y." as the tag comment.

Run “make release”

This will automatically build:

  1. The source tarball, with “make distcheck” (commit V).
  2. The binary tarballs for each architecture, after first updating the guix package in (gnu packages package-management) so that it uses the commit above (were now at V + 1).
  3. The GuixSD installation images, after first updating the guix package again to refer to the 2nd commit above (were now at V + 2).

All these files will end up in a release-X.Y.Z sub-directory.

Needless to say, this operation takes some time. Since this is committing on your behalf, it will contact your gpg-agent to sign commits, so you need to keep an eye on it.

Steps #2 and #3 require you to have offloading set up so you can build for all the supported architectures. For instance, if youre running this on an x86_64 machine, you should have an “armhf-linux” machine in /etc/guix/machines.scm.

Push the branch

If “make release” succeeded, push the branch and tag:

$ git push

Upload all the files

$ ./build-aux/gnupload to alpha.gnu.org:guix \ release-X.Y.Z/*.[xlg]z

You'll get an email soon after when the upload is complete.

Your GPG public key must be registered for this to work (info "(maintain) Automated Upload Registration").

Make sure to publish your public key on public OpenPGP servers (keys.gnupg.net, pgp.mit.edu, etc.), so that people can actually use it to check the authenticity and integrity of the tarball.

Add a Hydra jobset for branch 'version-X.Y.Z'

This jobset will have to be kept until the next release, so that substitutes remain available.

Announcements

First, re-read the GNU Maintainers Guide on this topic.

Update web pages

  • Update the latest-guix-version value in (www shared), in the guix-artwork.git repository.
  • Regenerate the web site by using (export-web-site "/path/to/cvs/checkout") from the (www) module, and then “cvs ci” the result so that gnu.org is actually updated.

Update the on-line copy of the manual

Use Gnulib's `gendocs' script, add to the manual/ directory of the web site.

$ cd doc $ ~/src/gnulib/build-aux/gendocs.sh guix "GNU Guix X.Y Reference Manual"

Prepare the email announcement

$ build-aux/announce-gen release-type=alpha package-name=guix \ previous-version=A.B current-version=X.Y \ gpg-key-id=MY-KEY url-directory=ftp://alpha.gnu.org/gnu/guix \ bootstrap-tools=autoconf,automake,makeinfo,help2man

The subject must be "GNU Guix X.Y released". The text should remain formal and impersonal (it is sent on behalf of the Guix and GNU projects.) It must include a description of what Guix is (not everyone reading info-gnu may know about it.) Use the text of previous announcements as a template.

Below the initial boilerplate that describes Guile should come the output of `announce-gen', and then the `NEWS' file excerpt in its entirety (don't call it a change log since that's not what it is.)

Send the email announcement

Send to these places, preferably in the morning on a working day (UTC):

Post a news item on the web site

The news will end up on planet.gnu.org and Planet Scheme. The text can be shorter and more informal, with a link to the email announcement for details. Add the "About" footer at the bottom of the announcement.

Copyright © 2014, 2018 Ludovic Courtès <ludo@gnu.org> Copyright © 2011, 2012, 2013 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.