logo_kerberos.gif

Difference between revisions of "Release engineering notes"

From K5Wiki
Jump to: navigation, search
Line 1: Line 1:
 
==Pulling up changes to release branches==
 
==Pulling up changes to release branches==
   
* For each supported release (usually the most recent and one previous release), prepare a git working copy with the krb5-X.Y branch checked out from the master repository. From the krbdev-services repository, copy githooks/hookutils.py and githooks-client/prepare-commit-msg into .git/hooks for both working copies.
+
* For each supported release (usually the most recent and one previous release), prepare a git working copy with the krb5-x.y branch checked out from the master repository. From the krbdev-services repository, copy githooks/hookutils.py and githooks-client/prepare-commit-msg into .git/hooks for both working copies.
   
 
* Check that each working copy is clean, has no unexpected extra commits, and is up to date with the master repository. Checking the output of "git status" and running "git pull" should accomplish this.
 
* Check that each working copy is clean, has no unexpected extra commits, and is up to date with the master repository. Checking the output of "git status" and running "git pull" should accomplish this.
Line 9: Line 9:
 
* For each release branch:
 
* For each release branch:
 
** For each ticket marked for pullup to that branch:
 
** For each ticket marked for pullup to that branch:
*** For each commit listed in the ticket, run "KRB5_VERSION_FIXED=X.Y.Z git cherry-pick -x COMMIT", and address any merge conflicts. X.Y.Z should be the next patch release that will be created on the release branch.
+
*** For each commit listed in the ticket, run "KRB5_VERSION_FIXED=x.y.z git cherry-pick -x COMMIT", and address any merge conflicts. x.y.z should be the next patch release that will be created on the release branch.
 
*** Examine the commits any consider any possible interactions with changes made since the release branch.
 
*** Examine the commits any consider any possible interactions with changes made since the release branch.
 
*** Run "make" and "make check".
 
*** Run "make" and "make check".
Line 29: Line 29:
 
* regenerate localization template <code>(cd po && make update-po)</code> and commit if changed
 
* regenerate localization template <code>(cd po && make update-po)</code> and commit if changed
 
* manually edit patchlevel.h to reflect the new release
 
* manually edit patchlevel.h to reflect the new release
** for a patch release, increment KRB5_PATCHLEVEL, change the next line to "/* #undef KRB5_RELTAIL */", and change KRB5_RELTAG to "krb5-X.Y.Z-final"
+
** for a patch release, increment KRB5_PATCHLEVEL, change the next line to "/* #undef KRB5_RELTAIL */", and change KRB5_RELTAG to "krb5-x.y.z-final"
 
* manually update README
 
* manually update README
 
** release dates (in major changes heading, ISO 8601 date format with hyphens)
 
** release dates (in major changes heading, ISO 8601 date format with hyphens)
Line 35: Line 35:
 
*** note whether bugfix release, maintenance vs current release
 
*** note whether bugfix release, maintenance vs current release
 
*** bullet list of major changes
 
*** bullet list of major changes
*** minor changes = list of RT tickets fixed -- always grab a fresh list from RT when editing these! (https://krbdev.mit.edu/rt/NoAuth/Fixed?rel=X.Y.Z)
+
*** minor changes = list of RT tickets fixed -- always grab a fresh list from RT when editing these! (https://krbdev.mit.edu/rt/NoAuth/Fixed?rel=x.y.z)
 
** contributors (RT is a good source for these; click through the ticket links from the above URL and look for reporter and patch author names)
 
** contributors (RT is a good source for these; click through the ticket links from the above URL and look for reporter and patch author names)
 
* re-run <code>(cd man && make man)</code> and <code>(cd po && make update-po)</code> with updated patchlevel.h
 
* re-run <code>(cd man && make man)</code> and <code>(cd po && make update-po)</code> with updated patchlevel.h
* commit the README and patchlevel-specific man page and template changes with the subject "Update for krb5-X.Y.Z"
+
* commit the README and patchlevel-specific man page and template changes with the subject "Update for krb5-x.y.z"
 
* <code>git tag krb5-x.y.z-final</code>
 
* <code>git tag krb5-x.y.z-final</code>
   

Revision as of 15:52, 28 February 2017

Pulling up changes to release branches

  • For each supported release (usually the most recent and one previous release), prepare a git working copy with the krb5-x.y branch checked out from the master repository. From the krbdev-services repository, copy githooks/hookutils.py and githooks-client/prepare-commit-msg into .git/hooks for both working copies.
  • Check that each working copy is clean, has no unexpected extra commits, and is up to date with the master repository. Checking the output of "git status" and running "git pull" should accomplish this.
  • At https://krbdev.mit.edu/rt/ , start a new search, add the criteria "queue is krb5", then the criteria "tags is pullup", then search. It can be useful to create a browser tab for each search result.
  • For each release branch:
    • For each ticket marked for pullup to that branch:
      • For each commit listed in the ticket, run "KRB5_VERSION_FIXED=x.y.z git cherry-pick -x COMMIT", and address any merge conflicts. x.y.z should be the next patch release that will be created on the release branch.
      • Examine the commits any consider any possible interactions with changes made since the release branch.
      • Run "make" and "make check".
      • If the change isn't covered by automated tests, consider testing it by hand.
  • Consider pushing the updated release branches to a personal github fork integrated with Travis, and waiting for Travis to finish building and testing it.
  • If the pulled up changes are substantial, consider running a build and check of each release branch on krbdev-sparc-build.
  • Push the updated release branches to the master repository.
  • Remove the "pullup" tag from each ticket. This can be done in a bulk update from the search result page using the button at the lower right, or it can be done on each ticket individually from the jumbo page.

Preparing releases

Pre-mkrel

  • check copyright years in project-wide stuff
  • update config.guess and config.sub from git://git.savannah.gnu.org/config.git (only for minor releases, not patch releases)
  • make sure you're in a build tree that's not the source tree and configured using --enable-maintainer-mode
  • make depend and commit if changed, with the commit message "make depend"
  • regenerate manpages: (cd man && make man) and commit if changed, with the commit message "make update-po"
  • regenerate localization template (cd po && make update-po) and commit if changed
  • manually edit patchlevel.h to reflect the new release
    • for a patch release, increment KRB5_PATCHLEVEL, change the next line to "/* #undef KRB5_RELTAIL */", and change KRB5_RELTAG to "krb5-x.y.z-final"
  • manually update README
    • release dates (in major changes heading, ISO 8601 date format with hyphens)
    • changes
    • contributors (RT is a good source for these; click through the ticket links from the above URL and look for reporter and patch author names)
  • re-run (cd man && make man) and (cd po && make update-po) with updated patchlevel.h
  • commit the README and patchlevel-specific man page and template changes with the subject "Update for krb5-x.y.z"
  • git tag krb5-x.y.z-final

Running mkrel

  • path_to_mkrel/mkrel --repository $YOUR_SOURCE_TREE krb5-x.y.z-final krb5-x.y.z
  • manually inspect output for versioning and correctness
    • HTML docs
    • PDF docs
    • patchlevel.h as modified by mkrel
  • push to authoritative repository
  • rerun mkrel against the authoritative repository: path_to_mkrel/mkrel krb5-x.y.z-final krb5-x.y.z

Post-mkrel

  • PGP sign
  • generate branded HTML docs
    • HTML_LOGO=.... make html
    • we don't ship the branded (with logo) docs because the logo is an MIT trademark
  • edit web pages
  • send announcement to kerberos-announce