This plugin implements a Nextflow executor for Hashicorp Nomad.
Please note that this is a community contributed plugin and is a collaboration between
- Abhinav Sharma (@abhi18av) as part of his PhD work at the Stellenbosch University and Jorge Aguilera (@jagedn) as a contributor from Evaluacion y desarrollo de negocios, Spain.
- Tomas (@tomiles) and his team from Center For Medical Genetics Ghent, Belgium.
The contribution roles during the development of initial plugin and testing along with the long term commitments have been discussed in development and infrastructure group.
Feel free to reach out to us on the #platform-nomad
channel on Slack for discussions and feedbacks.
-
settings.gradle
Gradle project settings.
-
plugins/nf-nomad
The plugin implementation base directory.
-
plugins/nf-nomad/build.gradle
Plugin Gradle build file. Project dependencies should be added here.
-
plugins/nf-nomad/src/resources/META-INF/MANIFEST.MF
Manifest file defining the plugin attributes e.g. name, version, etc. The attribute
Plugin-Class
declares the plugin main class. This class should extend the base classnextflow.plugin.BasePlugin
e.g.nextflow.Nomad.NomadPlugin
. -
plugins/nf-nomad/src/resources/META-INF/extensions.idx
This file declares one or more extension classes provided by the plugin. Each line should contain the fully qualified name of a Java class that implements the
org.pf4j.ExtensionPoint
interface (or a sub-interface). -
plugins/nf-nomad/src/main
The plugin implementation sources.
-
plugins/nf-nomad/src/test
The plugin unit tests.
ExtensionPoint
is the basic interface which uses nextflow-core to integrate plugins into it. It's only a basic interface and serves as starting point for more specialized extensions.
Run the following command in the project root directory (ie. where the file settings.gradle
is located):
./gradlew check
To run and test the plugin in a development environment, configure a local Nextflow build with the following steps:
-
Clone the Nextflow repository in your computer into a sibling directory:
git clone --depth 1 https://github.com/nextflow-io/nextflow _resources/nextflow
-
Generate the nextflow class path
cd _resources/nextflow && ./gradlew exportClasspath
-
Compile the plugin alongside the Nextflow code:
cd ../../ && ./gradlew compileGroovy
-
Run Nextflow with the plugin, using
./launch.sh
as a drop-in replacement for thenextflow
command, and adding the option-plugins nf-nomad
to load the plugin:./launch.sh run main.nf -plugins nf-nomad
The project should be hosted in a GitHub repository whose name should match the name of the plugin, that is the name of the directory in the plugins
folder (e.g. nf-nomad
).
Follow these steps to package, upload and publish the plugin:
-
Create a file named
gradle.properties
in the project root containing the following attributes (this file should not be committed to Git):github_organization
: the GitHub organisation where the plugin repository is hosted.
-
Use the following steps to package and create a release for your plugin on GitHub:
- set the desired
version
value ingradle.properties
and commit the change in themaster
branch - tag the repo with the version
- push all changes (the tag fill fire the
release
GH action)
Once the action is finished a new release is created and all related artifacts attached to it
- set the desired
-
Create a pull request against nextflow-io/plugins to make the plugin accessible to Nextflow.
Use the
json
file created in previous steps