ReleaseManagement - geopython/pygeoapi GitHub Wiki

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
  • update changelog information in debian/changelog
  • commit the above updates:
# in branch master
git commit -m 'update release version' pygeoapi/__init__.py docs/source/conf.py debian/changelog
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
# pin requirements in requirements.txt as per RFC2
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

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

  • Go to pygeoapi DockerHub Builds Page.
  • Press the blue button "Configure Automated Builds"
  • Under "Build Rules" press the '+' button
  • In new build rule choose: Source Type tag and fill-in new tag x.y.z in Source and Docker Tag columns
  • Disable toggle Build Caching in last column
  • Press the button Save (Save and Build will build all tagged Images!)
  • Press the button Trigger Build
  • Inspect the build progress (may take up to 15 mins!) on builds

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: pygoeapi 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)