Skip to content
Tom Kralidis edited this page Mar 18, 2026 · 37 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 GitHub Actions CI, OGC CITE tests and unit tests

Step 3

Create a release tag against master:

  • update desired branch with x.y.z in pygeoapi/__init__.py and docs/source/conf.py
  • commit the above updates:
# in branch master
git commit -m 'update release version' pygeoapi/__init__.py docs/source/conf.py
git push origin master  # or branch if releasing from a branch

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 a stable branch is required:

git checkout -b x.y
vi requirements.txt  # pin requirements in requirements.txt as per RFC2
git commit -m 'pin requirements to stable branch' requirements.txt
git push x.y

If releasing from a branch:

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

Release to PyPI:

python3 setup.py sdist bdist_wheel --universal
twine upload dist/*

Step 4

Ensure Docker Image on DockerHub for release/tag (you'll need permission for that repo on DockerHub).

Docker images are automatically built against master and release tags, deploying to DockerHub and GitHub Container Registry.

As part of the release process, ensure that the tag has been published to DockerHub. This process is started once the release tag is pushed to GitHub, and thus may take some time to complete. Once the tag is visible on DockerHub, you may continue to Step 5.

Step 5

Upgrade stable version of pygeoapi on demo.pygeoapi.io/stable. Not automated yet! Requires changes within the demo.pygeoapi.io GitHub repo and the demo server:

  • edit/commit/push services/pygeoapi_stable/docker-compose.yml: set new version tag x.y.z of image: geopython/pygeoapi: x.y.z
  • edit/commit/push services/pygeoapi_stable/local.config.yml: set new version in metadata.identification.title
  • login with admin account on demo server demo.pygeoapi.io
  • cd ~/git
  • pull changes on server: ./refresh-git.sh
  • no rebuild needed, only possible changes in local.config.yml if config-conventions have changed
  • restart:
    • cd ~/git/services/pygeoapi_stable
    • restart: ./stop.shthen ./start.sh

Step 6

Update https://github.com/geopython/pygeoapi.io/blob/master/docs/download.md

Push updates

git commit -m 'update release' docs/download.md
git push origin master

Step 7

Add the x.y.z documentation to readthedocs.org

Step 8

Create a release on GitHub.

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

<high level description>

## Download

- source code: https://pygeoapi.io/download
- PyPI: https://pypi.org/project/pygeoapi

## At a glance
- [xx Issues fixed](https://github.com/geopython/pygeoapi/issues?q=is%3Aissue+milestone%3Ax.y.x+is%3Aclosed)
- [xx Pull Requests contributed](https://github.com/geopython/pygeoapi/pulls?q=is%3Apr+milestone%3Ax.y.z+is%3Aclosed)

## API
- TODO

## Web/UI/HTML
- TODO

## Providers
- TODO

## Configuration
- TODO

## Documentation
- TODO

## Other
- TODO

## Thanks

The pygeoapi team gives thanks for all contributions made for this release.

As always, all contributions are always welcome.

The pygeoapi team
https://pygeoapi.io

Step 9

  • Email mailing list:
Subject: pygeoapi x.y.z released

Body:

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

Please see the release announcement at https://github.com/geopython/pygeoapi/releases/tag/x.y.z for more information.

The pygeoapi team gives thanks for all contributions made for this release.

As always, all contributions are always welcome.

The pygeoapi team
https://pygeoapi.io

Step 10

Step 11

Update version in master back to dev (x.y.dev0)

Clone this wiki locally