This document describes the automated release process for GeoPublicHealth.
The project uses GitHub Actions to automate the build and release process.
metadata.txt - Update version=version X.Y.Zdocs/plugins.xml - Update <version>X.Y.Z</version> and download URLdocs/plugins.xml - Update <update_date> to current datemetadata.txt:
changelog=The changelog lists the plugin versions
and their changes:
X.Y.Z - Description of changes
...
git add metadata.txt docs/plugins.xml
git commit -m "Bump version to X.Y.Z"
git push origin main
git tag -a vX.Y.Z -m "Version X.Y.Z - Brief description"
git push origin vX.Y.Z
gh release view vX.Y.Z --repo ePublicHealth/GeoPublicHealth
If you need to create a release manually:
# Create build directory
mkdir -p build/GeoPublicHealth
# Copy plugin files (exclude development files)
rsync -av \
--exclude='.git' \
--exclude='__pycache__' \
--exclude='*.pyc' \
--exclude='.DS_Store' \
--exclude='installation' \
--exclude='.tx' \
--exclude='.github' \
--exclude='.travis.yml' \
--exclude='Makefile' \
--exclude='test_suite.py' \
--exclude='CONTRIBUTING.md' \
--exclude='videos' \
--exclude='docs' \
--exclude='scripts' \
--exclude='sample_data' \
--exclude='AGENTS.md' \
--exclude='*.log' \
--exclude='.vscode' \
--exclude='.ruff_cache' \
--exclude='.gitignore' \
--exclude='build' \
./ build/GeoPublicHealth/
# Create zip file
cd build
zip -r geopublichealth3.42.X.zip GeoPublicHealth -x "*.pyc" "*__pycache__*" "*.DS_Store"
cd ..
# Copy to installation directory (tracked in git)
cp build/geopublichealth3.42.X.zip installation/
# Add to git (use -f since installation/ is in .gitignore)
git add -f installation/geopublichealth3.42.X.zip
# Create git tag
git tag -a vX.Y.Z -m "Version X.Y.Z - Description"
git push origin vX.Y.Z
# Create GitHub release with gh CLI
gh release create vX.Y.Z \
installation/geopublichealth3.42.X.zip \
--repo ePublicHealth/GeoPublicHealth \
--title "GeoPublicHealth vX.Y.Z" \
--notes "Release notes here..."
Follow Semantic Versioning (https://semver.org/):
Examples:
0.2.0 → 0.2.1 - Bug fix release0.2.1 → 0.3.0 - New features added0.3.0 → 1.0.0 - Stable release or breaking changesBefore creating a release, always:
make pep8
python test_suite.py
The plugin repository is defined in docs/plugins.xml. This file is served directly from GitHub and used by QGIS to check for updates.
When you create a new release:
<version> tag<download_url> to point to the new zip file<update_date> to the current dateQGIS will automatically detect the new version and offer it to users.
If you need to rollback a release:
gh release delete vX.Y.Z --repo ePublicHealth/GeoPublicHealth --yes
git tag -d vX.Y.Z
git push origin :refs/tags/vX.Y.Z
The project includes two GitHub Actions workflows:
build-and-release.ymlv*)test.ymlv0.2.1)git tag -lplugins.xml has correct download URL