Distributing plugins#
Once a plugin has been created, it can be made available through the Open Ephys Plugin Installer by following the instructions on this page. Any plugins distributed this way must first be vetted and polished by the Open Ephys core team. If you have a plugin you believe is ready to be shared with the community, please get in touch!
Warning
Some of the steps on this page require private information and login credentials contained in a private GitHub repository, open-ephys-plugins/open-ephys-plugins-ci
.
Setting up the plugin repository#
Fork the plugin of interest to the
open-ephys-plugins
GitHub account (requires login).Go to
open-ephys-plugins
organization settings and navigate to Secrets->Actions.Update the
ARTIFACTORYAPIKEY
settings by clicking on Update and then going to Repository access settings.Select and enable your plugin repository from the list of organization repositories, and click on update selection.
Setting up the Artifactory repository#
Login to the openephys.jfrog.io account.
Go to Administration settings and open Repositories from the left sidebar.
Click on “Add Repositories” on the top-right corner and create a “Local Repository”. Select the package type as “Generic”.
Now, specify the name of the plugin in the
Repository Key
field.Note
The name of the repository should have the
-plugin
string appended. So, if your plugin name is Online PSTH, then the repository name should beOnlinePSTH-plugin
.Enter the plugin description in the
Public Description
field.Click on
Create Local Repository
. That should create the plugin Artifactory repository for you.Now, go to the Artifactory homepage and click on Artifactory > Artifacts.
Navigate to the repository you just created.
Click on properties, and add the following properties to the repository:
# Property Name
Property Value
Name
The actual name of the plugin as specified in the
OpenEphysLib.cpp
fileType
Source, Filter, Sink, RecordEngine, or CommonLib
Developers
Name(s) of the plugin developer(s)
Docs
Link to the plugin documentation page on
Dependencies
(Optional) Names of external plugin dependencies (if any) that have their own repository
Configuring external dependencies (if any)#
If the plugin has any external dependency that requires its own repository to be built and deployed, you’ll have to follow all the steps mentioned above to set up the GitHub and Artifactory repositories. Importantly, while setting up the Artifactory repository properties, make sure you add “Type” property with “CommonLib” as it’s value. There’s no need to specify any other properties.
Once the external dependency is setup, go to the plugin’s Artifactory repository that needs this dependency. Add the “Dependencies” property and the dependency repository name without the appended “-plugin” string as the value.
Releasing the plugin#
For each new release, tag the latest commit on GitHub with the version number. Versions should follow the semantic versioning scheme. (Do not add a ‘v’ in front of the version number).
Add GitHub Actions workflows for macOS, Linux, and Windows (examples available in the private
open-ephys-plugins-ci
repository)
Note
If the plugin has dependencies that are a part of the plugin repository, refer to the neuropixels-pxi plugin workflows to understand the proper way to package dependencies inside the plugin’s zip file.
After pushing the workflows and the tag to the Github repository, it should run the GitHub Actions workflows across all the platforms which should build the plugin, package it, and publish it to Artifactory.
Once the workflows run successfully, the plugins (or its latest version) should be available to download from the GUI’s Plugin Installer.
Note
If there is an external dependency which also needs to be updated and released, do that prior to releasing the plugin that depends on it.