pgRouting Release Process Checklist - pgRouting/pgrouting GitHub Wiki

This page hopefully documents that things that need to get done to make a product release.

Release policy

  • Minor releases:
    • during the rewrite we require alpha, beta & rc to be released as PRE-release, and the final release
    • all of them one week apart
    • add numbering beta1 etc as needed
    • code freeze start on alpha, only documentation changes are accepted
    • small bug fixes of code on already rewritten code can be accepted
    • bug fixes for making pgRouting work on not tested platform are accepted
    • Minor releases are done on:
      • March and September
      • In Mid-February & mid-August alpha release is expected
  • Micro releases:
    • Do not need the alpha, beta, rc sequence
    • A micro release happens because of a bug fix on the released code.
      • The PR is merged and the release is generated on the next week's Friday to have time to fully review and test.
    • If documentation fixes were done by the community, without code change no micro release is generated.
      • documentation changes are passed to the next minor release.

Releasing versions from 2.5 to ~ 2.x

  • Let X be the minor number
  • let Y be the micro number
  • Do the appropriate substitutions
  1. Create an issue title:
    Releasing 2.x.y (tasks)
    
  2. Copy the release tasks in the issue
  3. Adjust the values from that release to the current release
    • minor version number
    • micro version number
    • alpha/beta/rc for pre-release
    • copy from the NEWS the changes of the release
  4. Follow the steps
    • Adjust the links to the CI tests
    • Run locally the script until the repository is left unchanged
      • Releaser must have installed different versions of C++
        • For pgROuting 2.5.x: gcc 4.6, 4.8, 4.9, 5.0
      • Releaser must have installed all versions of pgRouting to test the update

Releasing versions from v2.0 to v2.4

More ideas: https://github.com/postgis/postgis/blob/svn-trunk/HOWTO_RELEASE

  • Hopefully the release goals have been set and completed
  • Create/update the change log for Version 2.1.0
  • Create/update the NEWS
  • Edit doc/test/utilities-any.rest and update version numbers
  • Edit doc/index.html.in and add new release to it, remove obsolete stuff
  • Travis compiles and tests run (with gcc 4.6.3)
                   postGIS
      postgreSQL |  2.0  | 2.1 |
      -----------+-------+-----+
            9.1  |     |   |
      -----------+-------+-----+
            9.2  |     |   |
      -----------+-------+-----+
            9.3  |     |   |
      -----------+-------+-----+
            9.4  |     |   |
      -----------+-------+-----+
            9.5  |     |   |
  • Winnie compiles and tests run

    postGIS  2.1, postGIS 2.2.0dev, boost 1.58/1.53
    
                 | gcc481 | gcc483 |
      postgreSQL | 32 bit | 64 bit |
      -----------+--------+--------+
            9.3  |ok      | ok     | 
      -----------+--------+--------+
            9.4  |ok      | ok     | 
      -----------+--------+--------+
            9.5  |ok      | ok     | 
      -----------+--------+--------+
  • Mac compiles and tests run

    postgreSQL 9.4, boost 1.58, postGIS OK
    
  • CMakeLists.txt has been updated with the correct version number

  • An appropriate tag has been created for this release

  • alpha step

    • Tag in git as pgrouting-2.1.0-alpha1

      git tag -a -m "Create the pgrouting-2.1.0-alpha1 tag" pgrouting-2.1.0-alpha1

      git push --tags

    • Alpha Documentation has been build and pushed to gh-pages (also index.html has been modified)

    • send announcement to users and dev lists, ask for testers and feedback

    • got feedback

    • resolved issues

    • Finish documentation

  • beta step

    • Tag in git as pgrouting-2.1.0-beta
      git checkout develop
      git tag -a -m "Create the pgrouting-2.1.0-beta tag" pgrouting-2.1.0-beta
      git push --tags
  • Beta Documentation has been build and pushed to gh-pages (also index.html has been modified)

  • Draft and publish a new release on the Github "Release" Page: https://github.com/pgRouting /pgrouting/releases

  • send announcement to users and dev lists, ask for testers and feedback

  • got feedback

  • resolved issues

  • RC1 step

    • Tag in git as pgrouting-2.1.0--RCN
      git checkout develop
      vi VERSION
      (modify to rc1)
      git tag -a -m "Create the pgrouting-2.1.0-rc1 tag" pgrouting-2.1.0-rc1
      git push --tags
  • Beta Documentation has been build and pushed to gh-pages (also index.html has been modified)

  • Draft and publish a new release on the Github "Release" Page: https://github.com/pgRouting

  • send announcement to users and dev lists, ask for testers and feedback

  • got feedback

  • resolved issues

  • RC2 step

    • Tag in git as pgrouting-2.1.0--RC2
      git checkout develop
      vi VERSION
      (modify to rc2)
      git commit -a -m 'update to VERSIN to rc2'
      git tag -a -m "Create the pgrouting-2.1.0-rc2 tag" pgrouting-2.1.0-rc2
      git push --tags
  • RC2 Documentation has been build and pushed to gh-pages (also index.html has been modified)
      git checkout pgrouting-2.1.0-rc2
      cd build
      cmake -DWITH_DOC=ON ..
      make doc
      cd ..
      git checkout gh-pages
      mkdir v2.1.0-rc2
      # it's the rc2 documentation, but also the latest in develop
      cp -r build/doc/html/en/* v2.1.0-rc2
      cp -r build/doc/html/en/* dev
      vi index.html
          <edit to add the link to v2.1.0-rc2>
      git add v2.1.0-rc2
      git commit -a -m 'added the v2.1.0-rc2 documentation'
      git push
      git checkout develop
  • Draft and publish a new release on the Github Release Page:
  • send announcement to users and dev lists, ask for testers and feedback
  • got feedback
  • resolved issues
  • RC3 step
    • Tag in git as pgrouting-2.1.0--RC3
      git checkout develop
      vi VERSION
      (modify to rc3)
      git commit -a -m 'update to VERSION to rc3'
      git tag -a -m "Create the pgrouting-2.1.0-rc3 tag" pgrouting-2.1.0-rc3
      git push --tags
  • RC3 Documentation has been build and pushed to gh-pages (also index.html has been modified)
      git checkout pgrouting-2.1.0-rc3
      cd build
      cmake -DWITH_DOC=ON ..
      make doc
      cd ..
      git checkout gh-pages
      mkdir v2.1.0-rc3
      # it's the rc3 documentation, but also the latest in develop
      cp -r build/doc/html/en/* v2.1.0-rc3
      cp -r build/doc/html/en/* dev
      vi index.html
          <edit to add the link to v2.1.0-rc3>
      git add v2.1.0-rc3
      git commit -a -m 'added the v2.1.0-rc3 documentation'
      git push
      git checkout develop
  • Draft and publish a new release on the Github Release Page:
  • send announcement to users and dev lists, ask for testers and feedback
  • got feedback
  • resolved issues

RELEASE OF 2.0.1

  • Tag in git as pgrouting-2.0.1
      git fetch origin
      git checkout master
      git pull
      vi VERSION
      modify to 2.0.1
      git commit -a -m 'update to VERSION to 2.0.1'
      git tag -a -m "Create the pgrouting-2.0.1 tag" pgrouting-2.0.1
      git push --tags
  • Documentation for 2.0.1 didn't change so no need to rebuild
  • Draft and publish a new release on the Github Release Page

RELEASE OF 2.1.0

  • clean .travis.yml
      git checkout develop
      vi .travis.yml
          <make it work for master and develop only>
  • Build and run final tests and verify version numbers tools/test-update tools/test-runner

  • Perform step 4 of Version Update Signatures cp build/lib/pgrouting--2.1.0.sig tools/sigs/pgrouting--2.1.0.sig git add tools/sigs/pgrouting--2.1.0.sig git commit -a -m 'added 2.1.0 signatures' git push

  • get the commit(hash) number

  git log
  • Update hash# and branch
      vi VERSION 
        <"pgRouting-2.1.0-0-<hash> master">
- [ ] Push code and tag to github
      ```
      git commit -a -m 'update VERSION to final release 2.1.0'
      git push
      git stash
      git tag -a -m "Create the pgrouting-2.1.0 tag" pgrouting-2.1.0
      git push --tags
      ```


   - [ ] Final release documentation has been build and pushed to gh-pages (also ``index.html`` has been modified)
  git checkout pgrouting-2.1.0
  cd build
  #build all the documentation, not only the html. (but I don't know how to build latex)
  cmake -DWITH_DOC=ON ..
  make doc
  cd ..
  git checkout gh-pages
  mkdir 2.1
  # it's the final documentation, but only English documentation. html, pdf & (MAN?)
  cp -r build/doc/html/en/* 2.1
  vi index.html
      <edit to add the link to 2.1>
      <remove the links to the pre-releases documentation>
  git add 2.1
  git commit -a -m 'added the v2.1 documentation'
  git push
  git checkout master

- [ ] merge into master
  git checkout master
  git merge pgrouting-2.1.0

- [ ] Draft and publish a new release on the Github [Release](https://github.com/pgRouting/pgrouting/releases) Page. Include
      - [ ] The contents of the news
      - [ ] link to the documentation
- [ ] change develop to be develop of nex version
   - [ ] go thru all the sql files and make it with next library version: 2.2

- [ ] The source tarball link from Github has been updated in the documentation and on the download page
   - [ ] in the documentation
   - [ ] in the download page

- [ ] Project website has been updated
- [ ] Upstream Linux distribution packagers have been notified

   - who ... 
   - Devrim Gunduz <devrim at gunduz (dot) org>
   - Daniel -- do you do Ubuntu?  Markus Wanner? 
   - Mac -- KingChaos - 
- [ ] Upstream Windows distribution packagers have been notified
  - Regina <lr (at) pcorp (dot) us>
- [ ] An announcement has been written, reviewed sent to -users, -dev, postgis-users, OSGeo-discuss, OSGeo-Announce mailing list.
⚠️ **GitHub.com Fallback** ⚠️