Release Process

From Einstein Toolkit Documentation
Revision as of 18:53, 17 June 2010 by Bmundim (talk | contribs) (Helpful Tools)
Jump to: navigation, search

Release Process

This page describes the release process in some detail. Getting a release out of the door without embarrassing oversights requires a bit more planning and care than one would like.

Long-term planning

A few months or weeks before the release:

  • Decide it is time to make another release
  • Choose features which are going to be included, and those which won't be included
  • Choose a tentative date
  • Begin discussions on the mailing list, reminding people to look at test cases, review patches etc.

One or two weeks before the release

  • Set up a wiki planning page for the release
  • Ask for volunteers, assign tasks to people
  • Review thorns for code quality, documentation, test cases
  • Decide on a thorn list
  • Decide on a list of release-critical systems
  • Collect list of new features, newsworthy items, and acknowledgements for release announcement on wiki
  • Choose a concrete date
  • Announce date publicly

One or two days before the release

  • Have a telecon with the release team, discuss (and modify if necessary) release process and responsibilities
  • Get a list of all repositories that are involved (including repositories for tools such as GetComponents)
  • Publicly declare a freeze on all involved thorns and tools
  • Test all thorns on all systems, collect status reports on wiki
  • Update release planning wiki page with peoples', thorns', and systems' statuses
  • Set up a (smaller) technical release team who will be available all day on the day of the release
  • Draft release announcement

The release

  • Have the technical release team meet in the same room (brick, EVO, chat, phone)
  • Briefly re-check status of thorns and machines
  • Possibly disable all outside write access to all critical repositories
  • CREATE THE RELEASE BRANCH
  • * cvs: ???
  • * svn: svn copy https://<repository-server>/<repository-path>/trunk https://<repository-server>/<repository-path>/branches/ET_2010_06
  • * darcs: clone the repository, appending a suffix to the name
  • * git: git push origin origin:refs/heads/ET_2010_06
  • * hg: ???
  • Possibly update version numbers in stable/development branches
  • Update component lists to point to new stable version
  • Check out release branch on all systems, re-run all quick tests
  • Update documentation on web sites (set up fresh copies of pdfs/htmls)
  • Update tutorials on web sites (update version numbers, urls)
  • Re-enable write access to all repositories
  • Finalise release announcement
  • ANNOUNCE

After the release

  • Watch mailing lists for problem reports
  • Use released version to repeat a few production simulations

Helpful Tools

This section collects a handful of useful commands that may become critical to guarantee the quality of the release. The descriptions below are quite technical and intended for the developers and maintainers only.

Creating and working with git branches