Skip to content
This repository was archived by the owner on Apr 10, 2025. It is now read-only.

creating a release

Jeff Kaufman edited this page Dec 14, 2015 · 44 revisions

When a new version of mod_pagespeed is released with a new version of PSOL we want to make a corresponding release. Process:

  1. Find the git commit on trunk-tracking that corresponds to the svn 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 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. 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. git checkout -b USERNAME-prepare-release-VERSION-beta
  8. Make whatever changes you need to get it to build against http://modpagespeed.googlecode.com/svn/tags/VERSION/src, including porting/backporting any tests. Ideally there are no changes here.
  9. Run the standard tests: (built with both --with-debug and without)
    $ test/run_tests.sh 8050 8051 /path/to/mod_pagespeed/ /path/to/sbin/nginx
    
  10. Run the tests again with TEST_NATIVE_FETCHER=true TEST_SERF_FETCHER=false.
  11. Run steps 7 and 8 again with USE_VALGRIND=true.
  12. If you made any changes in step 7 or in response to failing tests, send your changes out for review as a pull request against release-VERSION-beta:
    git push origin USERNAME-prepare-release-VERSION-beta:USERNAME-prepare-release-VERSION-beta
    
    Visit https://github.com/pagespeed/ngx_pagespeed/compare/release-VERSION-beta...USERNAME-prepare-release-VERSION-beta
  13. When those are merged and pushed github will automatically generate https://github.com/pagespeed/ngx_pagespeed/archive/release-VERSION-beta.zip
  14. git checkout release-VERSION-beta
  15. git tag -a vVERSION-beta -m "Release VERSION beta" && git push origin vVERSION-beta
  16. 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
  17. If this all works, we need to replace the master branch with the release branch: git push -f origin release-VERSION-beta:master. Make sure you remembered to merge master into trunk-tracking in step 1 and nothing has been added to it since or else this will lose work.
  18. 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. If you're releasing from the 1.N branch and master is also on the 1.N branch, check out master. Otherwise check out release-PREV-VERSION-beta (If making 1.7.30.8 the PREV-VERSION would be 1.7.30.7.) The reason to go from master is we want to include any bug fixes that have been made on the master branch.
  2. Follow all the steps above, starting with step 4.
  3. In step 14, instead of replacing the master branch, merge release-VERSION-beta into master.

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

Clone this wiki locally