Skip to content

pgRouting How to make a release

Ashish Kumar edited this page Aug 28, 2022 · 2 revisions

pgRouting - How to make a release

For creating automatic releases using GitHub actions:

  • Verify all stuff (refer to the below section)
  • Create and push the tag: git tag -a -m "Create v3.0.4 tag" v3.0.4, git push origin v3.0.4
  • The Release GitHub actions will get triggered, which will create a draft release here: https://github.com/pgRouting/pgrouting/releases.
  • (Extra) Click on "Generate release notes" button in the top-right and cut it to the clipboard. This text can be published in the release discussion.
  • Verify the draft release body, edit it if required, and publish it. Check the "Create a discussion for this release" option before publishing.
  • (Extra) Go to the release discussion and paste the above cut text.
  • Close the milestone, and announce the release (refer to the below sections).

The below steps list the things that need to be done to make a release for pgRouting "manually":

Verify all stuff

Build the code and documentation locally

git checkout release-3.0
git fetch
git pull
  • Verify signatures didn't change by comparing with the previous micro.
git diff v3.0.3 sql/sigs
  • If the release is a new minor verify update works.

  • Build the code locally (make a fresh build).

rm -rf build/*
mkdir build
cd build/

# Using all defaults
cmake  -DDOC_USE_BOOTSTRAP=ON -DWITH_DOC=ON -DBUILD_DOXY=ON  -DCMAKE_BUILD_TYPE=Release -DES=ON ..
make -j 4
sudo make install
cd ..
  • Capture the hash for the pgr_full_version:
tools/testers/doc_queries_generator.pl  -alg version  -doc
git diff

Move the documentation to gh-pages

  • Checkout to the gh-pages branch.
git stash
git checkout gh-pages
  • Get the latest changes (if any)
git pull
  • Check the index: https://docs.pgrouting.org/ to see which documentation needs to be updated. (e.g. For 3.0.4, only users' documentation needs to be updated).

  • To update the documentation, a small guide can be found here:

more README.md
  • For users documentation:
rm -rf 3.0
cp -r build/doc/html 3.0
git add 3.0
  • For developers documentation:
rm -rf doxygen
cp -r build/doxygen/html doxygen
git add doxygen
  • Use git diff & git status at your discretion.

  • When done checking:

git add 3.0

# the `--no-verify` is in when there is a git hook
git commit --no-verify  -m  'Updating users documentation for 3.0.4'

git push
  • Go back to the working branch. Wait for the pages to update.
git checkout release-3.0

The tag and the documentation files

  • Create the tag and push it
git tag -a -m "Create v3.0.4 tag" v3.0.4
git push origin v3.0.4
  • Edit the tag, and make sure that the description of the release contains the Release Notes and the Attachments, similar to this: https://github.com/pgRouting/pgrouting/releases/tag/v3.0.4

  • The attachment consists of 5 files, similar to this:

    1. doc-v3.0.4-en-es.tar.gz
    2. doc-v3.0.4-en.tar.gz
    3. doc-v3.0.4-es.tar.gz
    4. pgrouting-3.0.4.tar.gz
    5. pgrouting-3.0.4.zip
  • The last two files are the source code in .zip and .tar.gz format, which shall be downloaded and uploaded: https://github.com/pgRouting/pgrouting/releases/tag/v3.0.4

  • The first three are compressed documentation files in .tar.gz format. Go to the build/doc folder from the file explorer.

  • For English-Spanish documentation, rename html folder to doc-v3.0.4-en-es and compress it.

  • For English documentation, rename it to doc-v3.0.4-en. Make sure the folder only contains en and index.html. Then, compress the folder.

  • For Spanish documentation, rename it to doc-v3.0.4-es. Make sure the folder only contains es and index.html. Edit the index.html file to change the href from en to es and verify that it opens correctly in the browser. Then, compress the folder.

  • Additional Note: to compress in .tar.gz format using the terminal:

tar -zcvf doc-v3.0.4-en-es.tar.gz doc-v3.0.4-en-es
  • Upload all the compressed documentation files and publish the release.

Manage milestone

Announce the release

Clone this wiki locally