Release a plugin version¶
A plugin reaches a deployment as a version: the version in its pyproject.toml, uploaded to
the deployment's catalogue. A version is never replaced. To ship a change, raise the version and
upload again.
A new version is also the only way to change what a plugin may do, or what it depends on:
- New roles in
[tool.meridian]. The person launching it approves them again. - New packages in
dependencies. Live code runs on the image it was launched from.
To release it to the Community registry¶
A release that any deployment can install is a signed tag the platform builds. It is two commands, from the plugin's directory:
- Once:
meridian plugin key setup. It makes your SSH signing key ready, sets git to sign tags with it, and registers its public half if you are an Owner or Admin of the organisation; otherwise it tells you to ask one. - Each release:
meridian plugin release 0.2.0, once the change is merged and main's CI is green. It checks, signsv0.2.0on main's head, pushes it and publishes it. It opens no pull request and changes no file.
The version goes up in the change's own pull request: it raises version in pyproject.toml to
0.2.0 and adds a ## 0.2.0 heading to CHANGELOG.md, with the change under it and no date.
meridian plugin release refuses a version that pyproject.toml does not say, or whose heading is
missing or dated, and says what to do. Tagging with git tag -s, pushing the tag and running
meridian plugin publish yourself is the other way.
See Publish a plugin to a registry, which also says who publishes.
To release from a development deployment¶
Use this when the plugin is running live under meridian plugin dev.
- Run
meridian plugin check --run-tests, and fix what it names until it passes. - Raise
versioninpyproject.toml, for example from0.1.0to0.2.0. -
From the plugin's directory, run:
-
Read the roles it shows, and answer
yto approve.
It uploads the directory as it is now, as that version, stops the live instance and launches the version in its place:
It is now an ordinary version in the catalogue, launched the ordinary way.
Note
If you forget step 2, the release is refused: the version is recorded already, and a version is never replaced. Raise it and release again.
To release to any deployment¶
Use this for a deployment that is not for development, or when the plugin is not live.
- Run
meridian plugin check --run-tests, and raiseversioninpyproject.toml. -
Upload it:
-
Stop the running instance:
-
Launch the new version under the same instance name, and approve what it asks for:
-
Check it:
Keeping the instance name keeps what was granted against it: access groups and external account links name the instance, not the version.
To move a plugin to a newer SDK¶
A plugin pins one release of the SDK, in pyproject.toml and in its Dockerfile. To move it to a
newer one, from its directory, with its changes committed:
It moves both pins, rewrites what each release in between changed, runs meridian plugin check, and
lists what is left to do by hand, with the file and line. Review the diff, then release as above.
See meridian plugin migrate.
To move a plugin to another deployment¶
Each deployment has its own catalogue. To take a plugin from your development deployment to your firm's:
-
Sign in to the other deployment too:
-
Connected to more than one, name the deployment on each command:
The firm's deployment admin approves the roles at launch.
To share a plugin with other firms¶
Each deployment's catalogue is its own. To make a version installable by any deployment, release it to the platform's Community registry, above.
Related¶
- Write a plugin's documentation: what a deployment admin reads before launching the version.
- Plugin manifest: the keys in
[tool.meridian]. - Command line: every
meridian pluginflag. - Build with an AI agent: the live loop.
- Prove your plugin against a released runtime: an e2e check of the version before you release it.