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
i18nfolder can be omitted from the Git repository
changelogsection in the metadata.txt can be populated if the CHANGELOG.md is present- set the
experimentalflag according to the tag if needed
📖 For further information, see the documentation.
QGIS-Plugin-CI is best served if you use these two conventions :
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
- The code is under a git repository (
git archiveis 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-cior insetup.cfgorpyproject.tomlwith a[qgis-plugin-ci]section (seedocs/configuration/options.mdfor details). - The source files of the plugin are within a sub-directory with a
metadata.txtfile 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.
- 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.
When releasing, you can publish the plugin :
- In the official QGIS plugin repository. You need to provide user name and password for your Osgeo account.
- 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.
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-beta13.4.0-rc.2
In any Python module, you can have a global variable as DEBUG = True, which will be changed to False when packaging the plugin.
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.