QGIS Plugin CI
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 :
Command line
usage: qgis-plugin-ci [-h] [-v] [--version] [--no-validation] {package,changelog,release,pull-translation,push-translation} ...
Package and release QGIS plugins from the command line.
options:
-h, --help show this help message and exit
-v, --verbose Verbosity level: None = WARNING, -v = INFO, -vv = DEBUG (default: 1)
--version show program's version number and exit
--no-validation Turn off validation of the version to be released or packaged (default: False)
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
📜 See the full CLI reference in documentation.
Requirements
- 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.
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 :
- 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.
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-beta13.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.
Metadata
Release files for qgis-plugin-ci 2.11.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| qgis_plugin_ci-2.11.0.tar.gz | 85.4 kB | Without provenance | Details for qgis_plugin_ci-2.11.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| qgis_plugin_ci-2.11.0-py3-none-any.whl | Python 3 | none | any | Details for qgis_plugin_ci-2.11.0-py3-none-any.whl |
Total release size: 130.0 kB
Release files / qgis_plugin_ci-2.11.0.tar.gz
| Download URL | qgis_plugin_ci-2.11.0.tar.gz |
|---|---|
| Size | 85.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ee2d895679603884253ffc8f4c3eaa5af6716e7b7c55b853a9b9fd5b441d819c
|
|
BLAKE2b-256 checksum How to use checksums |
8bee36cd08117560e230696d92304d02586789a6c31721ecdd0cdc04890ab139
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / qgis_plugin_ci-2.11.0-py3-none-any.whl
| Download URL | qgis_plugin_ci-2.11.0-py3-none-any.whl |
|---|---|
| Size | 44.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
df18c0ab482665ec27a1bfbd585020fdcc256df8909fc8100444e1e270e90636
|
|
BLAKE2b-256 checksum How to use checksums |
d97369512094547fab50c4ff4fac3a2b6df0917429c11fac85ce158885248e0f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Security for qgis-plugin-ci 2.11.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.