add nextflow d30e48d
This commit is contained in:
175
nextflow/docs/modules/module-registry.md
Normal file
175
nextflow/docs/modules/module-registry.md
Normal file
@@ -0,0 +1,175 @@
|
||||
(module-registry-page)=
|
||||
|
||||
# Nextflow module registry
|
||||
|
||||
:::{versionadded} 26.04.0
|
||||
:::
|
||||
|
||||
The [Nextflow module registry](https://registry.nextflow.io) is a central repository for sharing Nextflow modules.
|
||||
It provides module discovery, version tracking, and integrity verification.
|
||||
|
||||
The module registry shares its login, access tokens, and web interface with the {ref}`Nextflow plugin registry <plugin-registry-page>`.
|
||||
|
||||
(module-registry-claim)=
|
||||
|
||||
## Claiming a namespace
|
||||
|
||||
A namespace is an organizational prefix (e.g., the namespace `nf-core` owns modules like `nf-core/fastqc` and `nf-core/samtools`).
|
||||
As a namespace member, you can publish new modules and release new versions under that prefix.
|
||||
Each namespace can have multiple members who share publishing rights.
|
||||
|
||||
To claim a namespace:
|
||||
|
||||
1. Open the [Nextflow module registry](https://registry.nextflow.io/) in a browser.
|
||||
|
||||
2. Log in to [Seqera](https://cloud.seqera.io/login) with your GitHub or Google account, or by providing an email address.
|
||||
|
||||
:::{note}
|
||||
If you are logging in for the first time, Seqera sends an authentication link to your email address to complete the login process.
|
||||
:::
|
||||
|
||||
3. Go to **My Resources** and select the **My Namespaces** tab.
|
||||
|
||||
4. Select **Claim Namespace**
|
||||
|
||||
4. Enter your **Namespace name**, **Organization**, **Project URL**, and a **Description**.
|
||||
|
||||
5. Select **Submit Request**.
|
||||
|
||||
The namespace shows as **PENDING REVIEW** until an administrator approves the request.
|
||||
Admin approval is required only once.
|
||||
Once approved, you can publish modules using the `nextflow module publish` command.
|
||||
|
||||
(module-registry-access-token)=
|
||||
|
||||
## Creating an access token
|
||||
|
||||
An API access token is required to publish modules to the registry.
|
||||
|
||||
To create an API access token:
|
||||
|
||||
1. Open the [Nextflow module registry](https://registry.nextflow.io/) in a browser.
|
||||
|
||||
2. Log in to [Seqera](https://cloud.seqera.io/login) with your GitHub or Google account, or by providing an email address.
|
||||
|
||||
:::{note}
|
||||
If you are logging in for the first time, Seqera sends an authentication link to your email address to complete the login process.
|
||||
:::
|
||||
|
||||
3. Go to **My Resources** and select the **My access tokens** tab.
|
||||
|
||||
4. Under **Create New Access Token**, enter a descriptive name for the **Token name** and select a token duration from the **Expiry** drop down.
|
||||
|
||||
5. Select **Generate Token**.
|
||||
|
||||
6. Copy the token and store it somewhere safe.
|
||||
You cannot view it again after this step.
|
||||
|
||||
Once you have your token, see [Publishing modules](#publishing-modules) for instructions on how to use it.
|
||||
|
||||
## Viewing modules
|
||||
|
||||
View the modules you have published in the registry:
|
||||
|
||||
1. Open the [Nextflow module registry](https://registry.nextflow.io/) in a browser.
|
||||
|
||||
2. Log in and go to **My Resources**.
|
||||
|
||||
3. Select the **My Modules** tab.
|
||||
|
||||
The page lists all modules published under your namespaces, along with their versions and status.
|
||||
|
||||
(publish-modules)=
|
||||
|
||||
## Publishing modules
|
||||
|
||||
Publishing requires a {ref}`claimed namespace <module-registry-claim>` and an {ref}`access token <module-registry-access-token>`.
|
||||
|
||||
Provide your registry token in one of two ways:
|
||||
|
||||
**Environment variable:**
|
||||
|
||||
```console
|
||||
$ export NXF_REGISTRY_TOKEN=<token>
|
||||
```
|
||||
|
||||
**Nextflow configuration:**
|
||||
|
||||
```groovy
|
||||
registry {
|
||||
apiKey = '${MYORG_TOKEN}'
|
||||
}
|
||||
```
|
||||
|
||||
Use the `module publish` command to upload a module to the registry:
|
||||
|
||||
```console
|
||||
$ nextflow module publish myorg/my-module
|
||||
```
|
||||
|
||||
The module directory must include the following files:
|
||||
|
||||
- `main.nf`: The module script.
|
||||
- `meta.yml`: The module spec with name, version, description, and license.
|
||||
- `README.md`: Module documentation.
|
||||
|
||||
Provide a `namespace/name` reference or a relative path to the module directory.
|
||||
|
||||
:::{tip}
|
||||
Before publishing, verify your module is ready:
|
||||
|
||||
- Run {ref}`module spec <cli-module-spec>` to generate or update `meta.yml` from your `main.nf`.
|
||||
- Run {ref}`module validate <cli-module-validate>` to check that all required files and spec fields are present.
|
||||
|
||||
See {ref}`dev-modules-page` for a complete guide on creating modules.
|
||||
:::
|
||||
|
||||
See {ref}`module publish <cli-module-publish>` for the full command reference.
|
||||
|
||||
## Registry configuration
|
||||
|
||||
By default, Nextflow uses the public registry at `https://registry.nextflow.io`.
|
||||
Configure alternative or additional registries using the `registry` scope in your Nextflow configuration.
|
||||
|
||||
### Use a private registry
|
||||
|
||||
Replace the default registry with your organization's private registry:
|
||||
|
||||
```groovy
|
||||
registry {
|
||||
url = 'https://registry.myorg.com'
|
||||
apiKey = '${MYORG_TOKEN}'
|
||||
}
|
||||
```
|
||||
|
||||
Nextflow uses this registry for all module operations (search, install, and publish).
|
||||
|
||||
### Use multiple registries
|
||||
|
||||
Specify multiple registries as a list.
|
||||
Nextflow queries them in order when searching for or installing a module:
|
||||
|
||||
```groovy
|
||||
registry {
|
||||
url = [
|
||||
'https://registry.myorg.com',
|
||||
'https://private.registry.nextflow.io'
|
||||
]
|
||||
apiKey = '${MYORG_TOKEN}'
|
||||
}
|
||||
```
|
||||
|
||||
In this example, Nextflow searches the private registry first and falls back to the public registry.
|
||||
|
||||
:::{note}
|
||||
The `apiKey` authenticates with the primary (first) registry.
|
||||
:::
|
||||
|
||||
:::{tip}
|
||||
Override the target registry with the `-registry` flag:
|
||||
|
||||
```console
|
||||
$ export NXF_REGISTRY_TOKEN=<token>
|
||||
$ nextflow module publish myorg/my-module -registry 'https://private.registry.myorg.com'
|
||||
```
|
||||
:::
|
||||
Reference in New Issue
Block a user