Release Packaging

Tom Kralidis edited this page Oct 19, 2016 · 72 revisions

The following are step by step instructions on how to package a release.

Building the Release Packages

Source Code

Step 1

Make sure the source builds and works locally, and the docs build with no errors

Step 2

Make sure the source passes all OGC CITE tests (see OGC-CITE-Compliance for instructions) and unit tests (paver test)

Step 3

Create a release tag against master:

* update desired branch with `x.y.z` in the following files:
 * `VERSION.txt`
 * `pycsw/`
* commit the above updates:

# in branch master
git commit -am 'update release version'
git push origin master # or branch if releasing from a branch

* in the `` repository, update:
 * `docs/` <-- only if this is a final release
 * `download/` to set the current release URL to and

# in repository
git commit -am 'update release version'
git push origin gh-pages

Release tags are in the format `x.y.z`

If releasing from master:

git tag -a x.y.z -m 'tagging x.y.z'
git push --tags

If releasing from a branch:

git checkout x.y
git tag -a x.y.z -m 'tagging x.y.z'
git push --tags

Step 4

Export the package:

git archive --format=tar --prefix=pycsw-x.y.z/ x.y.z | (cd /tmp/ && tar xf -)
cd /tmp/pycsw-x.y.z/

Step 5

Make the docs locally for the distribution and generate tester/index.html:

paver refresh_docs
paver gen_tests_html

Step 6

Package the distribution:

cd ..
tar cf pycsw-x.y.z.tar pycsw-x.y.z
gzip pycsw-x.y.z.tar
zip -r pycsw-x.y.z

Step 7

Copy pycsw-x.y.z.tar.gz and to the download area on

scp pycsw-x.y.z.tar.gz $

Step 8

Add the x.y.z documentation to

Step 9

Create a release branch if this is major release.

git branch x.y
git push origin x.y

Step 10

If applicable (for final releases only, not beta or rc releases), update master with the development version to x.y-dev in the following files:

  • VERSION.txt
  • pycsw/

...and then git push origin master

Step 11

If major release:

  • in repository branch:
    • # create development/announce/ by pasting release announcement
    • git add development/announce/
    • # ref new page in development/announce/
    • vi development/announce/
    • git commit -m 'add release announcement page' development/
    • git push origin gh-pages

Email announcement to:

  • pycsw-devel
  • OSGeo-discuss <-- only for final releases
  • OSGeo-announce <-- only for final releases
  • freegis-list <-- only for final releases
  • GeoPython <-- only for final releases
  • Twitter
  • Google+

Message Template

Subject: pycsw x.y.z released

The pycsw team announces the release of pycsw x.y.z. 

[High level overview of release]

Source and binary downloads:

The source code is available at:

Version x.y.z (YYYY-MM-DD):

[Bulleted list of enhancements / bug fixes]

Testers and developers are welcome.

The pycsw developer team.

Note: for announcing to new communities, add:

pycsw is an OGC CSW server implementation written in Python.

pycsw fully implements the OpenGIS Catalogue Service Implementation Specification (Catalogue Service for the Web). Initial development started in 2010 (more formally announced in 2011). The project is certified OGC Compliant, and is an OGC Reference Implementation.  Since 2015, pycsw is an official OSGeo Project.

pycsw allows for the publishing and discovery of [[geospatial]] metadata via numerous APIs (CSW 2/CSW 3, OpenSearch, OAI-PMH, SRU). Existing repositories of geospatial metadata can also be exposed, providing a standards-based metadata and catalogue component of spatial data infrastructures.

pycsw is Open Source, released under an MIT license, and runs on all major platforms (Windows, Linux, Mac OS X).

Step 12

Upload to PyPi (for final releases)

git checkout x.y.z
python sdist upload
  • Note: for alpha/beta/rc releases, use TestPyPI
git checkout x.y.z-beta1
# if package is not registered
python sdist register -r  # (testpypi gets wiped clean regularly)
python sdist upload -r

Step 13

Update (for final releases)

  • release information
  • history (for major and minor releases)
  • new features/enhancements