This is an old revision of the document!
Table of Contents
Releasing your own plugin
After you created an plugin that works with the latest released version of GroIMP, you can publish this plugin to the GroIMP plugin manger. This tutorial assumes you use a gitlab repository, yet this is not required for a GroIMP plugin(see doing_it_without_gitlab ).
The plugin deployment pipeline
To understand the following steps lets have a look at the plugin infrastructure and the pipeline and what is suppose to happen after a new version (tag) of a plugin is pushed to gitlab.
The infrastructure inside each plugin repository (that has at least one released version) consists of four main components:
- The code it self(in git)
- The package registry (e.g. https://gitlab.com/grogra/groimp-plugins/QSM/-/packages) where the jars and poms of all already released versions are stored. This registry is used for the plugin manager to download the jars and for maven to provide the packages compilation.
- A gitlab page with the compiled embedded documentation (e.g. grogra.gitlab.io/groimp-plugins/QSM/) this is manly used for the manual web explorer(https://gitlab.com/grogra/groimp-utils/manual-web-explorer) to create https://manual.grogra.de/. This is done so the embedded documentation can be found via search engine or AI bot. Don't be surprise about the question marks on the gitlab page that is only happening there and not on the real website.
- The plugin.json file (e.g. https://grogra.gitlab.io/groimp-plugins/QSM/plugin.json) This file holds all necessary download links for each version of the plugin and their required libraries. As you can see the download link refers to the package registry.
Except for the code all this is automatically generated using a ci/cd pipeline that compiles the plugin using maven and extracts the information for the different files. The most tricky part is that the latest version of the plugin.json file only exists on the gitlab page. Therefore it is downloaded from the page extended with a new version and uploaded again every time a new version is created. This becomes relevant if the file needs to be altered (see trouble shoot).
This plugin.json already provides all that is needed to install a plugin using the plugin manager. Therefore it would be required to add the link to this file as a repository see here.
Yet to make it easier for everybody it is possible to bundle different plugins.json files to one large file providing a collection of possible plugins. further described here
The GroIMP developer team provides one official collection which is added to the plugin manager by default. This collection is managed in the Plugin web explorer (https://gitlab.com/grogra/groimp-utils/plugin_web_explorer).
The plugin web explorer runs a script once a day that takes all plugin.json files form the plugin_repo.list and turns them into one large file. Further the pipline creates the page plugin explorer https://grogra.gitlab.io/groimp-utils/plugin_web_explorer which is once a day mirrored to plugins.grogra.de Further all jars from the plugins and their libraries are published on plugins.grogra.de and updated once a day (see here).
If you want your plugin added to this list please reach out to us or add an request to the plugin web explorer repository.
Requirements
The following steps require a gitlab repository
Doing it without Gitlab
If you provide a download link to your jar and a plugin.json that refers to it you can host this where ever you want.
