Skip to content
Jeff Kaufman edited this page Oct 3, 2016 · 45 revisions

Beta release process:

  1. Find the git commit on trunk-tracking that corresponds to the revision at which the mod_pagespeed release was branched. Call this RELCOMMIT.
  2. run git checkout RELCOMMIT
  3. git checkout -b release-VERSION-beta
  4. run git log ..master --reverse to show all the commits that are on master and not on this branch. If any of those commits look like we need to keep them (there shouldn't be any, but there may be) then cherry-pick them onto this branch and also onto trunk-tracking.
  5. git grep OLDVERSION and replace all the usages. So I did git grep 1.6.29.7 and changed all to 1.7.30.1. Additionally, set the file PSOL_BINARY_URL to contain "https://dl.google.com/dl/page-speed/psol/VERSION.tar.gz". Commit this with a command like git commit -am 'release: version 1.6.29.7 -> 1.7.30.1'.
  6. Push this draft release branch to github: git push origin release-VERSION-beta:release-VERSION-beta
  7. Grab install/verify_nginx_release.sh from the mod_pagespeed repo and run install/verify_nginx_release.sh VERSION /path/to/VERSION.tar.gz This will build both debug and release versions of ngx_pagespeed to make sure it works. If this works, run it again on a 32-bit system.
  8. github will automatically generate https://github.com/pagespeed/ngx_pagespeed/archive/release-VERSION-beta.zip
  9. git checkout release-VERSION-beta
  10. git tag -a vVERSION-beta -m "Release VERSION beta" && git push origin vVERSION-beta
  11. Follow the build instructions from a user's perspective. These are the ones at https://github.com/pagespeed/ngx_pagespeed/tree/release-VERSION-beta#readme
  12. If this all works, we need to replace the master branch with the release branch: git push -f origin release-VERSION-beta:master.
  13. You're ready to announce the release!

If you're doing a point release, that is a release based off of another release, like "1.7.30.2" based on "1.7.30.1" the steps are a slightly different:

  1. Check out release-PREV-VERSION-beta (If making 1.7.30.8 the PREV-VERSION would be 1.7.30.7.)
  2. Follow all the steps above, starting with step 3.

The easiest place to go wrong in this process is if the binaries for the PSOL release aren't generated properly. Step 7 should catch this, and step 11 definitely should if there's anything wrong.

Later, when you're ready to announce the release, update the latest-beta tag to point to the new release:

git checkout vVERSION-beta && \
  git tag -d latest-beta && \
  git tag -a latest-beta -m "Marking VERSION as latest-beta" && \
  git push -f origin latest-beta

Stable release process

We don't change code between beta and stable, it's just a tagging thing. So retag the beta version as latest-stable:

VERSION=1.11.33.4
git checkout v${VERSION}-beta

git tag -d latest-stable
git tag -a latest-stable -m "Marking $VERSION as latest-stable"

git push -f origin latest-stable