Skip to main content

Let qgis-plugin-ci package and release your QGIS plugins for you. Have a tea or go hiking meanwhile. Contains scripts to perform automated testing and deployment for QGIS plugins. These scripts are written for and tested on GitHub Actions, GitLab CI, Travis-CI, and Transifex.

Project description

QGIS Plugin CI

PyPi version badge PyPI - Downloads PyPI - Python Version

Code style: black Imports: isort pre-commit pre-commit.ci status

Contains scripts to perform automated testing and deployment for QGIS plugins. These scripts are written for and tested on GitHub, Travis-CI, github workflows and Transifex.

  • Deploy plugin releases on QGIS official plugin repository
  • Publish plugin in Github releases, option to deploy a custom repository
  • Easily integrated in Travis-CI or github workflows
  • Completely handle translations with Transifex:
    • create the project and the languages
    • pull and push translations
    • all TS/QM files can be managed on the CI, the i18n folder can be omitted from the Git repository
  • changelog section in the metadata.txt can be populated if the CHANGELOG.md is present
  • set the experimental flag according to the tag if needed

:book: For further information, see the documentation.

QGIS-Plugin-CI is best served if you use these two conventions :

Command line

usage: qgis-plugin-ci [-h] [-v]
                      {package,changelog,release,pull-translation,push-translation}
                      ...

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         print the version and exit

commands:
  qgis-plugin-ci command

  {package,changelog,release,pull-translation,push-translation}
    package             creates an archive of the plugin
    changelog           gets the changelog content
    release             release the plugin
    pull-translation    pull translations from Transifex
    push-translation    update strings and push translations

Requirements

  • The code is under a git repository (git archive is used to bundle the plugin).
  • There is no uncommitted changes when doing a package/release (althought there is an option to bypass this requirement).
  • A configuration at the top directory either in .qgis-plugin-ci or in setup.cfg or pyproject.toml with a [qgis-plugin-ci] section (see docs/configuration/options.md for details).
  • The source files of the plugin are within a sub-directory with a metadata.txt file with the following fields:
    • description
    • qgisMinimumVersion
    • repository
    • tracker

See parameters.py for more parameters and details. Notice that the name of this directory will be used for the zip file.

QRC and UI files

  • Any .qrc file in the source top directory (plugin_path) will be compiled and output as filename_rc.py. You can then import it using import plugin_path.resources_rc
  • Currently, qgis-plugin-ci does not compile any .ui file.

Publishing plugins

When releasing, you can publish the plugin :

  1. In the official QGIS plugin repository. You need to provide user name and password for your Osgeo account.
  2. As a custom repository in Github releases and which can be added later in QGIS. The address will be: https://github.com/__ORG__/__REPO__/releases/latest/download/plugins.xml

Both can be achieved in the same process.

Pre-release and experimental

In the case of a pre-release (either from the tag name according to Semantic Versioning or from the GitHub release), the plugin will be flagged as experimental.

The tool will recognise any label use as a suffix to flag it as pre-release :

  • 10.1.0-beta1
  • 3.4.0-rc.2

Debug

In any Python module, you can have a global variable as DEBUG = True, which will be changed to False when packaging the plugin.

Other tools

QGIS-Plugin-Repo

QGIS-Plugin-CI can generate the plugins.xml file, per plugin. If you want to merge many XML files into one to have a single QGIS plugin repository providing many plugins, you should check QGIS-Plugin-Repo. It's designed to run on CI after QGIS-Plugin-CI.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qgis_plugin_ci-2.8.9.tar.gz (63.0 kB view details)

Uploaded Source

Built Distribution

qgis_plugin_ci-2.8.9-py3-none-any.whl (37.7 kB view details)

Uploaded Python 3

File details

Details for the file qgis_plugin_ci-2.8.9.tar.gz.

File metadata

  • Download URL: qgis_plugin_ci-2.8.9.tar.gz
  • Upload date:
  • Size: 63.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for qgis_plugin_ci-2.8.9.tar.gz
Algorithm Hash digest
SHA256 6718607821758afea95c8d50a1d905d93b664eb1e3b0694b470a6b5fdb13ebac
MD5 3eeff85d6698208ea135f3da8e09f1c6
BLAKE2b-256 deafd857dcdbaface228520f36e0a1dfb1c6e970e1a0abf9c56a47abe8e085eb

See more details on using hashes here.

File details

Details for the file qgis_plugin_ci-2.8.9-py3-none-any.whl.

File metadata

File hashes

Hashes for qgis_plugin_ci-2.8.9-py3-none-any.whl
Algorithm Hash digest
SHA256 0126ec9f915f5e9f5b2a8f35cae13769121b746fc9a8fdc7d003d7c5a07c80b5
MD5 fe243b1601c586455ce8c0d91cdcc117
BLAKE2b-256 1241e4ffe22c602039a2f8435a979cd0c5fc53bb80bb1de7e4c18a83ab577547

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page