Skip to content
Jeff Kaufman edited this page Dec 16, 2016 · 45 revisions

Beta release process

Only if this is a new release from master, create a release branch

  1. Find the git commit on master that corresponds to the revision at which the mod_pagespeed release was branched. Call this RELCOMMIT.
  2. run git checkout RELCOMMIT
  3. Figure out the number for the new branch you want to create.
  4. Create the new branch with git checkout -b NEWBRANCH

Update the branch for the new release (start here for a point release)

  1. If you didn't create it above, checkout the release branch: git checkout BRANCH
  2. 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. Most importantly, update the file PSOL_BINARY_URL to contain "https://dl.google.com/dl/page-speed/psol/VERSION-$BIT_SIZE_NAME.tar.gz".
  3. Commit this with a command like git commit -am 'release: version 1.6.29.7 -> 1.7.30.1'.
  4. Push this draft release branch to github: git push origin BRANCH
  5. Buld the nginx release: (These are the old, wrong instructions) Grab install/verify_nginx_release.sh from the mod_pagespeed repo and run install/verify_nginx_release.sh BRANCH /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.
  6. git checkout BRANCH (Just in case)
  7. git tag -a vVERSION-beta -m "Release VERSION beta" && git push origin vVERSION-beta
  8. github will automatically generate https://github.com/pagespeed/ngx_pagespeed/archive/vVERSION-beta.zip
  9. Follow the build instructions from a user's perspective. These are the ones at https://github.com/pagespeed/ngx_pagespeed/tree/BRANCH#readme
  10. You're ready to announce the release!

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 9 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