| 1 | # Publishing to the JetBrains Marketplace |
| 2 | |
| 3 | The plugin is served by every Diffinery instance from its own plugin repository (`/-/jetbrains/updatePlugins.xml`, |
| 4 | see [README.md](README.md)). These are the steps for listing it on the JetBrains Marketplace as well. |
| 5 | |
| 6 | ## Before the first upload |
| 7 | |
| 8 | 1. The Marketplace asks for a license and shows it: choose Apache-2.0, the repository's `LICENSE`. |
| 9 | 2. Create a vendor profile for Diffinery at https://plugins.jetbrains.com (an organization, so more than one person |
| 10 | can upload), and a permanent token under **My Tokens** for uploads from the command line. |
| 11 | 3. Upload the first version by hand (**Upload plugin** on the Marketplace), choosing the license and the |
| 12 | categories (Version Controls). The plugin id `com.diffinery` is what the server's plugin repository and the |
| 13 | docs use, so keep it. JetBrains reviews the first upload, which takes a few working days. |
| 14 | 4. People who installed from diffinery.com's plugin repository get Marketplace updates too (the IDE takes the highest |
| 15 | version from any repository), so keep the two on the same version. |
| 16 | |
| 17 | ## Listing |
| 18 | |
| 19 | | Field | Value | |
| 20 | | --- | --- | |
| 21 | | Name | Diffinery (`<name>` in `plugin.xml`) | |
| 22 | | Description | `<description>` in `src/main/resources/META-INF/plugin.xml` | |
| 23 | | Icon | `src/main/resources/META-INF/pluginIcon.svg` and `pluginIcon_dark.svg` | |
| 24 | | Change notes | `CHANGELOG.md` (add `changeNotes` to `pluginConfiguration` in `build.gradle.kts` to show it) | |
| 25 | | Compatibility | `since-build` 243 (2024.3), no upper bound; the Marketplace runs the Plugin Verifier on each upload | |
| 26 | | Screenshots | `apps/diffinery/docs/images/jetbrains-*.webp` (taken by `jetbrains-smoke.mjs` with `DOCS=1`) | |
| 27 | |
| 28 | ## Each release |
| 29 | |
| 30 | 1. Release as in [README.md](README.md#release). |
| 31 | 2. `./gradlew publishPlugin` with the token in `ORG_GRADLE_PROJECT_intellijPlatformPublishingToken` (set |
| 32 | `intellijPlatform { publishing { token = providers.gradleProperty("intellijPlatformPublishingToken") } }` first), |
| 33 | or upload `dist/diffinery-jetbrains-<version>.zip` on the plugin's Marketplace page. |
| 34 | 3. Deploying Diffinery keeps diffinery.com's plugin repository on the same version. |