IJSDK-689 Redirects for moved pages from IntelliJ SDK to Marketplace Docs

This commit is contained in:
Yann Cébron 2019-10-29 10:21:30 +01:00
parent 527084d96a
commit 64a541a664
22 changed files with 29 additions and 435 deletions

View File

@ -251,17 +251,8 @@
* Build Your Own IDE
* Licensing
## Part X - Plugin Repository
* [Introduction](plugin_repository/index.md)
* [API Reference](plugin_repository/api/api_reference.md)
* [Plugin Upload](plugin_repository/api/plugin_upload.md)
* [Plugins List](plugin_repository/api/plugins_list.md)
* [Plugin Details](plugin_repository/api/plugin_details.md)
* [Plugin Update Download](plugin_repository/api/plugin_download_update.md)
* [Maven Interface](plugin_repository/api/maven_interface.md)
* [Plugin Developers List](plugin_repository/api/plugin_developers.md)
* [Plugin Recommendations](plugin_repository/feature_extractor.md)
* [Custom Release Channels](plugin_repository/custom_channels.md)
## Part X - Plugin Repository \[moved]
* [Overview](plugin_repository/index.md)
## Appendix I - Resources

View File

@ -44,9 +44,9 @@ This guide is split into several parts, similar to a text book. Each part builds
Documents how to use the _IntelliJ Platform_ to create a new, custom IDE, rather than plugins to an existing product, e.g. like WebStorm, or Android Studio.
* [**Part X - Plugin Repository API**](/plugin_repository/index.md)
* [**Part X - Plugin Repository**](/plugin_repository/index.md)
Documents the API for the [Plugin Repository](https://plugins.jetbrains.com) service that JetBrains maintains and is used to host plugins. It is not necessary to know this API in order to publish plugins - plugins can be uploaded manually, or via the Gradle IntelliJ Plugin.
This part has been moved to [JetBrains Marketplace documentation](https://plugins.jetbrains.com/docs/marketplace/about-marketplace.html).
* [**Appendix I - Resources**](/appendix/resources/useful_links.md)

View File

@ -1,14 +0,0 @@
---
title: Plugin Repository API Reference
---
This documentation section overviews [JetBrains Plugin Repository](https://plugins.jetbrains.com) API.
Please note that most of the API endpoints are IntelliJ-specific.
* [Plugin Upload](/plugin_repository/api/plugin_upload.md)
* [Plugins List](/plugin_repository/api/plugins_list.md)
* [Plugin Details](/plugin_repository/api/plugin_details.md)
* [Plugin Update Download](/plugin_repository/api/plugin_download_update.md)
* [Maven Interface](/plugin_repository/api/maven_interface.md)
* [Plugin Developers List](/plugin_repository/api/plugin_developers.md)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,44 +0,0 @@
---
title: Plugin Repository Maven Interface
---
You can download a plugin update from the [plugin repository](https://plugins.jetbrains.com) using a Maven interface available at `https://plugins.jetbrains.com/maven`.
URL format is the following:
```
https://plugins.jetbrains.com/maven/<channel>/com/jetbrains/plugins/<plugin_xml_id>/<version>/<plugin_xml_id>-<version>.<extension>
```
Where
* **plugin_xml_id** is an unique Plugin XML ID specified on the right of the plugin's individual updade page or in the *plugin.xml*;
* **version** is a full update version;
* **channel** is a release channel the update is published to (empty channel means default *Stable* channel);
* **extension** is a plugin update package extension (*.jar* or *.zip*).
E.g. to download *[VueJs plugin version 1.0.1](https://plugins.jetbrains.com/plugin/8057-vue-js/update/23034)* you should send request at [https://plugins.jetbrains.com/maven/com/jetbrains/plugins/vue.js/1.0.1/vue.js-1.0.1.jar](https://plugins.jetbrains.com/maven/com/jetbrains/plugins/vue.js/1.0.1/vue.js-1.0.1.jar).
Also, you can use Gradle or Maven to retrieve a plugin as a maven-dependency:
* **groupId** is either **\<channel>.com.jetbrains.plugins** or **com.jetbrains.plugins** for *Stable* channel;
* **artifactId** is **pluginXmlId** (pluginXmlId is specified as a *Plugin XML ID* parameter on the right of the plugin's individual update page);
**build.gradle**
```
repositories {
maven { url 'https://plugins.jetbrains.com/maven' }
}
dependencies {
compile 'com.jetbrains.plugins:<plugin_xml_id>:<version>' // for the plugin from Stable channel
compile '<channel>.com.jetbrains.plugins:<plugin_xml_id>:<version>' // for the plugin from non-default channel
}
```
(please see parameters description above)

View File

@ -1,25 +0,0 @@
---
title: Plugin Details API
---
This API endpoint provides individual plugin details by specified *pluginId* or *pluginXmlId*:
```
https://plugins.jetbrains.com/plugins/list?pluginId=<pluginXmlId>
```
or
```
https://plugins.jetbrains.com/plugins/list?pluginId=<pluginId>
```
Where
* **pluginXmlId** is specified as a *Plugin XML ID* parameter on the right of the plugin's individual update page and in the plugin.xml;
* **pluginId** is a numeric ID of the plugin, can be retrieved from the plugin repository URL. e.g. [Scala](https://plugins.jetbrains.com/plugin/1347-scala) plugin ID is *1347*.
e.g. for [Scala Plugin](https://plugins.jetbrains.com/plugin/1347-scala):
[https://plugins.jetbrains.com/plugins/list?pluginId=org.intellij.scala](https://plugins.jetbrains.com/plugins/list?pluginId=org.intellij.scala)
or
[https://plugins.jetbrains.com/plugins/list?pluginId=1347](https://plugins.jetbrains.com/plugins/list?pluginId=1347)

View File

@ -1,25 +0,0 @@
---
title: Plugin Developers List API
---
This API endpoint provides a list of all plugin developers for a plugin by specified *pluginId* or *pluginXmlId*:
```
https://plugins.jetbrains.com/plugin/developers?xmlId=<pluginXmlId>
```
or
```
https://plugins.jetbrains.com/plugin/developers?pluginId=<pluginId>
```
Where
* **pluginXmlId** is specified as a *Plugin XML ID* parameter on the right of the plugin's individual update page and in the plugin.xml;
* **pluginId** is a numeric ID of the plugin, can be retrieved from the plugin repository URL. e.g. [Scala](https://plugins.jetbrains.com/plugin/1347-scala) plugin ID is *1347*.
e.g. for [Scala Plugin](https://plugins.jetbrains.com/plugin/1347-scala):
[https://plugins.jetbrains.com/plugin/developers?xmlId=org.intellij.scala](https://plugins.jetbrains.com/plugin/developers?xmlId=org.intellij.scala)
or
[https://plugins.jetbrains.com/plugin/developers?pluginId=1347](https://plugins.jetbrains.com/plugin/developers?pluginId=1347)

View File

@ -1,39 +0,0 @@
---
title: Download Plugin Update API
---
There are two ways to download the plugin version programmatically:
## Download the latest plugin update compatible with a certain product
```
https://plugins.jetbrains.com/pluginManager?action=download&id=<pluginXmlId>&build=<productCode>-<buildNumber>
```
Where
* **pluginXmlId** is specified as a *Plugin XML ID* parameter on the right of the plugin's individual update page and in the plugin.xml;
* **productCode** is a two-character product code. Can be blank.
* **buildNumber** is a build number of the IDE (specified in the About Dialog in the product, and in the release notes).
e.g. for [Scala plugin](https://plugins.jetbrains.com/plugin/1347-scala) (`pluginXmlId=org.intellij.scala`) & IntelliJ IDEA 2017.1 (`productCode=IU`, `buildNumber=171.3780.107`):
`https://plugins.jetbrains.com/pluginManager?action=download&id=org.intellij.scala&build=IU-171.3780.107`
## Download a specified version of the plugin
```
https://plugins.jetbrains.com/plugin/download?pluginId=<pluginXmlId>&version=<version>
```
Where
* **pluginXmlId** is specified as a *Plugin XML ID* parameter on the right of the plugin's individual update page and in the plugin.xml;
* **version** is a version of the plugin update.
e.g. for [Scala plugin](https://plugins.jetbrains.com/plugin/1347-scala) (`pluginXmlId=org.intellij.scala`) & Version `2017.1.15`:
`https://plugins.jetbrains.com/plugin/download?pluginId=org.intellij.scala&version=2017.1.15`

View File

@ -1,92 +0,0 @@
---
title: Upload Plugin API
---
Please note that maximum allowed plugin size is *200 MB*.
You should create a [**hubPermanentToken**](https://www.jetbrains.com/help/hub/Manage-Permanent-Tokens.html) at [JetBrains Hub](https://hub.jetbrains.com/users/me?tab=authentification) and specify Plugin Repository in Scope.
![Hub Token](img/hub_token.png)
Other parameters:
* **pluginId** is a numeric ID of the plugin, can be retrieved from the plugin repository URL. e.g. [Scala](https://plugins.jetbrains.com/plugin/1347-scala) plugin ID is *1347*. (*pluginXmlId* can be used instead)
* **pluginXmlId** is an unique identifier of the plugin specified as <id> in plugin.xml. Can be found as a *Plugin XML ID* parameter on the right of the plugin's individual update page and in the plugin.xml. (*pluginId* can be used instead)
* **channel** is a release channel the update is published to (empty channel means default *Stable* channel) (optional)
## POST
**Using pluginId**
Provide file as file contents. Curl command template:
```
curl -i --header "Authorization: Bearer <hubPermanentToken>" -F pluginId=<pluginId> -F file=@<path to plugin .jar/.zip file> -F channel=<channel> https://plugins.jetbrains.com/plugin/uploadPlugin
```
Curl command example:
```
curl -i --header "Authorization: Bearer perm:qwertyasdfghzxcvb" -F pluginId=5047 -F file=@Go-0.11.1197.zip -F channel=nightly https://plugins.jetbrains.com/plugin/uploadPlugin
```
**Using pluginXmlId**
Provide file as file contents. Curl command template:
```
curl -i --header "Authorization: Bearer <hubPermanentToken>" -F xmlId=<pluginXmlId> -F file=@<path to plugin .jar/.zip file> -F channel=<channel> https://plugins.jetbrains.com/plugin/uploadPlugin
```
Curl command example:
```
curl -i --header "Authorization: Bearer perm:qwertyasdfghzxcvb" -F xmlId=ro.redeul.google.go -F file=@Go-0.11.1197.zip -F channel=nightly https://plugins.jetbrains.com/plugin/uploadPlugin
```
## .NET
You can upload the plugins for .NET using *push* command of the *NuGet CLI*.
You should use [hubPermanentToken](https://www.jetbrains.com/help/hub/Manage-Permanent-Tokens.html) for it
with Plugin Repository in Scope as shown above.
Push command template:
```
nuget push <path to plugin .nupkg file> <hubPermanentToken> -Source https://plugins.jetbrains.com/
```
Push command example:
```
nuget push angularjs.1.9.0.nupkg perm:qwertyasdfghzxcvb -Source https://plugins.jetbrains.com/
```
**Configuration**
Configuration for NuGet is located in `%AppData%\NuGet\NuGet.Config` (Windows),
`~/.config/NuGet/NuGet.Config` or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux).
You can modify this file using [the NuGet CLI commands](https://docs.microsoft.com/en-us/nuget/reference/nuget-config-file).
For example, you can set a key for a source and add *plugins site* to the default push source:
```
# Set hub token for plugins site
nuget setApiKey perm:qwertyasdfghzxcvb -Source https://plugins.jetbrains.com/
# Set plugins site as default for push
nuget config -set defaultPushSource=https://plugins.jetbrains.com/
# Push if the key and the default source are set
nuget push angularjs.1.9.0.nupkg
```
In addition to the fact that you can change NuGet's default configuration,
you can apply your own configuration file using `ConfigFile` option in *push* command.
For example:
```
nuget push angularjs.1.9.0.nupkg -ConfigFile ~/my.Config
```
To obtain more information about the NuGet configuration see [this page](https://docs.microsoft.com/en-us/nuget/consume-packages/configuring-nuget-behavior).

View File

@ -1,21 +0,0 @@
---
title: Plugins List API
---
This API endpoint provides a list of all plugins compatible with a provided IDE build:
```
https://plugins.jetbrains.com/plugins/list/?build=<productCode>-<buildNumber>
```
Where
* **productCode** is a two-character product code. Can be blank.
* **buildNumber** is a build number of the IDE (specified in the *About Dialog* in the product, and in the release notes).
e.g. for IntelliJ IDEA 2017.1 (`productCode=IU`, `buildNumber=171.3780.107`):
```
https://plugins.jetbrains.com/plugins/list/?build=IU-171.3780.107
```

View File

@ -1,54 +0,0 @@
---
title: Custom Release Channels
---
## Uploading a Plugin Update to the Custom Release Channel
You may deploy plugins to a specific channel of your choosing via the plugin repository web interface, [Gradle plugin](../tutorials/build_system/deployment.md) or the [API](api/plugin_upload.md).
When empty, this will use the default plugin repository channel (*Stable*), available to all JetBrains plugin repository users, however, you can publish to an arbitrarily-named channel.
When using a non-default release channel, users will need to add a new custom plugin repository to install your plugin.
In the plugin repository, all channels will be displayed on the plugin page:
![Custom Channels](img/plugin_repository_custom_channels.png)
You can add custom channels and upload an update to the channel on the plugin *Edit* page (as well as via Gradle plugin and the API):
![Add Channels](img/plugin_repository_add_custom_channel.png)
## Configuring a Custom Channel in IntelliJ Platform Based IDEs
When using a non-default release channel, IntelliJ Platform Based IDEs users will need to add a new [custom plugin repository](https://www.jetbrains.com/idea/help/managing-enterprise-plugin-repositories.html) to install your plugin from the specified channel.
For example, if you specify `'eap'` as a release channel, then users will need to add the `https://plugins.jetbrains.com/plugins/eap/list` repository to install the plugin and receive updates. These channels are treated as separate repositories for all intents and purposes.
Popular channel names include:
* `eap`: https://plugins.jetbrains.com/plugins/eap/list
* `alpha`: https://plugins.jetbrains.com/plugins/alpha/list
* `beta`: https://plugins.jetbrains.com/plugins/beta/list
It is also possible to host an [Enterprise Plugin Repository](https://www.jetbrains.com/idea/help/adding-plugins-to-enterprise-repositories.html), in which case the URL structure will depend on your hosting address. For more information, please refer to the [IntelliJ IDEA documentation](https://www.jetbrains.com/idea/help/managing-plugins.html).
As an option, you might add a custom repository specifying the Plugin ID (Plugin ID is a numeric ID of the plugin, can be retrieved from the plugin repository URL. e.g. [Scala](https://plugins.jetbrains.com/plugin/1347-scala) plugin ID is *1347*):
```
https://plugins.jetbrains.com/plugins/<channel>/<pluginId>
```
(e.g. `https://plugins.jetbrains.com/plugins/eap/1347`)
Please refer to the [Managing Enterprise Plugin Repositories](https://www.jetbrains.com/help/idea/managing-plugins.html) help article for more information on how to specify a custom plugin repository in the IntelliJ Platform Based IDEs to receive plugins and updates from the custom release channel:
![Add Custom Plugin Repository in IntelliJ IDEA](img/intellij_custom_plugin_repository.png)
## Channel Priority Notice
Please note that custom repositories take precedence over the default channel. The update is uploaded to the default channel when the custom channel name is not provided, default channel is also known as a stable or release channel. That means that plugins/updates from custom channels (e.g. EAP channel) "overwrite" plugins/updates from the main repository (default channel).
If a user is subscribed to the EAP custom channel, they won't be able to see plugin updates without the channel (so they won't be able to see new updates in the default channel).
Therefore, it is recommended to add updates to the custom channel when you add them to the default (stable) channel if you want a user to get this update.
This behavior is temporary and going to be significantly reworked in the future.

View File

@ -1,76 +0,0 @@
---
title: Plugin Recommendations
---
The IntelliJ Platform IDEs will recommend a plugin for installation in one of the following cases:
* If a project contains files of types which are unsupported by the running IDE but are supported by a plugin
available in the plugin repository;
* If a project was created in an different IDE installation which had the plugin installed, and includes shared
settings (modules, facets, artifacts or run configurations) configured using the plugin.
IntelliJ Platform IDEs only show plugin suggestions in the appropriate context so they are meaningful to the user.
The [`feature extractor`](https://github.com/JetBrains/intellij-plugin-verifier/tree/master/intellij-feature-extractor/) tool
catalogs these types of features for a plugin. It works by statically analyzing the bytecode of a plugin to extract values
passed to the IntelliJ Platform APIs that support extending features in the above list.
However, if values are dynamically evaluated in a plugin, the `feature extractor` may return incomplete results.
If you cannot find your plugin in [the list of features](https://plugins.jetbrains.com/feature/), you can either make your code
easier for the analysis, or ask JetBrains to manually add any missed feature types.
## File Type
A plugin can [support specific file types](/reference_guide/custom_language_support/registering_file_type.md). When there is a file with a specific extension, pattern or name open in an IDE, a hint will be shown to users prompting them to install your plugin.
Both variants are supported by the `feature extractor`:
- Extend [FileTypeFactory](upsource:///platform/platform-api/src/com/intellij/openapi/fileTypes/FileTypeFactory.java)
and feed supported file extensions/exact file name matches in `createFileTypes(FileTypeConsumer)`, values of `FileTypeConsumer` are analyzed.
- Register `com.intellij.fileType` extension point (available in 2019.2+), all attributes are analyzed.
A suggestion to install plugins which support the _\*.d_ Extension Type:
![File Extensions Type of Feature](img/feature_extractor_extensions.png)
Refer to [Registering a File Type](/reference_guide/custom_language_support/registering_file_type.md) to provide this feature in a plugin.
## Run Configuration Type
When you want IDEs to show that your plugin supports Run Configuration Type, you need to implement
[ConfigurationType](upsource:///platform/lang-api/src/com/intellij/execution/configurations/ConfigurationType.java)
and implement the `getId()` method. The `feature extractor` analyzes the value of `getId()`.
A suggestion to install plugins that support the *Run D App* Configuration Type:
![Configuration Type of Feature](img/feature_extractor_configuration.png)
Refer to [Run Configurations](/basics/run_configurations.md) to get more information about how to declare this feature in your plugin.
## Facet Type
To support a Facet Type feature you should extend [FacetType](upsource:///platform/lang-api/src/com/intellij/facet/FacetType.java),
and pass `stringId` to its constructor. The value of the `stringId` parameter will be analyzed by the `feature extractor`.
A notification to install plugins that support the *jangaroo* Facet Type:
![Facet Type of Feature](img/feature_extractor_facet.png)
Refer to [Facet](/reference_guide/project_model/facet.md) for additional information.
## Module Type
If you want IDEs to show a prompt that your plugin can support creating specific Module Types, you should extend
[ModuleType](upsource:///platform/lang-api/src/com/intellij/openapi/module/ModuleType.java)
and pass the `id` parameter for your Module Type to its constructor. The `feature extractor` will evaluate the values of `id`.
See [Module](/reference_guide/project_model/module.md) and [Supporting Module Types](/tutorials/project_wizard/module_types.md)
for more information about supporting Module Types.
## Artifact Type
To support specific Artifact Types, extend [ArtifactType](upsource:///java/compiler/openapi/src/com/intellij/packaging/artifacts/ArtifactType.java),
and pass an `id` parameter to its constructor. The value of the `id` parameter is analyzed by the `feature extractor`.
An example suggestion to enable a plugin which supports a *dm.bundle* Artifact Type:
![Artifact Type of Feature](img/feature_extractor_artifacts.png)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

View File

@ -1,37 +1,32 @@
---
title: Plugin Repository (plugins.jetbrains.com)
title: Plugin Repository
redirect_from:
- /plugin_repository/api/api_reference.html
- /plugin_repository/api/plugin_upload.html
- /plugin_repository/api/plugins_list.html
- /plugin_repository/api/plugin_details.html
- /plugin_repository/api/maven_interface.html
- /plugin_repository/api/plugin_developers.html
- /plugin_repository/feature_extractor.html
- /plugin_repository/custom_channels.html
---
Plugins extend the core functionality of JetBrains products. They provide various integrations (e.g. with a VCS or application servers),
add support for various development technologies, frameworks and programming languages, and so on.
The Plugin Repository is a service responsible for:
* Providing a product (e.g. IntelliJ IDEA) with a list of compatible plugins and their updates;
* Facilitating the download of compatible plugin updates;
* Storage, uploading, and management of the plugins and their updates developed and published by third-party vendors or JetBrains.
JetBrains provides an official plugins repository [plugins.jetbrains.com](https://plugins.jetbrains.com) for all IntelliJ Platform-based IDEs,
as well as TeamCity (limited functionality).
You can set up your own enterprise plugin repositories for IntelliJ Platform based IDEs (also known as custom plugin repositories).
For example, to store plugins that you want to reserve for your company's internal use only.
[Read more](https://www.jetbrains.com/help/idea/managing-enterprise-plugin-repositories.html) about IntelliJ Platform-based IDEs enterprise repositories support.
This documentation section includes articles, FAQs, and tutorials on [JetBrains plugin repository](https://plugins.jetbrains.com) operations.
> **WARNING** **Part X - Plugin Repository** pages have moved to [JetBrains Marketplace](https://plugins.jetbrains.com/docs/marketplace/about-marketplace.html) documentation, please update your bookmarks.
In this section:
For your convenience pages previously part of this documentation are linked below:
* [API Reference](/plugin_repository/api/api_reference.md)
* [Plugin Upload](/plugin_repository/api/plugin_upload.md)
* [Plugins List](/plugin_repository/api/plugins_list.md)
* [Plugin Details](/plugin_repository/api/plugin_details.md)
* [Plugin Update Download](/plugin_repository/api/plugin_download_update.md)
* [Maven Interface](/plugin_repository/api/maven_interface.md)
* [Plugin Developers List](/plugin_repository/api/plugin_developers.md)
* [Plugin Recommendations](/plugin_repository/feature_extractor.md)
* [Custom Release Channels](/plugin_repository/custom_channels.md)
* [API Reference](https://plugins.jetbrains.com/docs/marketplace/api-reference.html)
* [Plugin Upload](https://plugins.jetbrains.com/docs/marketplace/plugin-upload.html)
* [Plugins List](https://plugins.jetbrains.com/docs/marketplace/plugins-list.html)
* [Plugin Details](https://plugins.jetbrains.com/docs/marketplace/plugin-details.html)
* [Plugin Update Download](https://plugins.jetbrains.com/docs/marketplace/plugin-update-download.html)
* [Maven Interface](https://plugins.jetbrains.com/docs/marketplace/maven-interface.html)
* [Plugin Developers List](https://plugins.jetbrains.com/docs/marketplace/plugin-developers-list.html)
* [Plugin Recommendations](https://plugins.jetbrains.com/docs/marketplace/intellij-plugin-recommendations.html)
* [Custom Release Channels](https://plugins.jetbrains.com/docs/marketplace/custom-release-channels.html)
You can always reach out to the plugin repository team via email [plugins-admin@jetbrains.com](plugins-admin@jetbrains.com).

View File

@ -24,6 +24,4 @@ To verify that the file type is registered correctly, you can implement the
[LanguageFileType.getIcon()](upsource:///platform/core-api/src/com/intellij/openapi/fileTypes/LanguageFileType.java)
method and verify that the correct icon is displayed for files which have the extension(s) associated with your file type.
If you want IDEs to show a hint prompting users that your plugin supports some extensions as in the example below, look at the information about [plugin recommendations](/plugin_repository/feature_extractor.md).
![File Extensions Type of Feature](/plugin_repository/img/feature_extractor_extensions.png)
If you want IDEs to show a hint prompting users that your plugin supports some extensions, look at the information about [plugin recommendations](https://plugins.jetbrains.com/docs/marketplace/intellij-plugin-recommendations.html).

View File

@ -12,7 +12,7 @@ Please see the guide page for manually [publishing a plugin](../../basics/gettin
{:toc}
## Providing Your Hub Permanent Token to Gradle
To deploy a plugin to the plugin repository, you need to supply your [JetBrains Hub Permanent Token](/plugin_repository/api/plugin_upload.md).
To deploy a plugin to the plugin repository, you need to supply your [JetBrains Hub Permanent Token](https://plugins.jetbrains.com/docs/marketplace/plugin-upload.html).
This page describes three options to supply your _Hub Permanent Token_ via Gradle using:
* Gradle properties,
* Environment variables,