跳转至

Marketplace、Logo、签名与发布运营

发布插件不只是 publishPlugin。一个能长期维护的插件需要明确的 Marketplace 页面、可识别 Logo、签名、版本策略、发布渠道、兼容性验证和回滚预案。

发布路径

首次发布必须手动上传到 JetBrains Marketplace。之后才能用 Gradle 自动发布。

./gradlew buildPlugin
./gradlew signPlugin
./gradlew publishPlugin

发布前必须确认:

  • 插件已签名。
  • 本地 ZIP 能安装到干净目标 IDE。
  • 版本号未重复,Marketplace 不接受同版本重复上传。
  • Plugin Verifier 覆盖目标 IDE build。
  • 插件页面满足 Marketplace 要求。

Token 与密钥

Marketplace Token 可以通过环境变量传入:

export ORG_GRADLE_PROJECT_intellijPlatformPublishingToken='YOUR_TOKEN'

Gradle:

intellijPlatform {
    publishing {
        token = providers.gradleProperty("intellijPlatformPublishingToken")
    }
}

签名密钥不要提交到仓库:

intellijPlatform {
    signing {
        certificateChain = providers.environmentVariable("CERTIFICATE_CHAIN")
        privateKey = providers.environmentVariable("PRIVATE_KEY")
        password = providers.environmentVariable("PRIVATE_KEY_PASSWORD")
    }
}

多行证书和私钥在 CI 或 IDE Run Configuration 中通常需要 Base64 编码后作为单行环境变量传入。

签名机制

官方签名流程是双重签名:

  1. 插件作者在构建时签名 ZIP。
  2. JetBrains Marketplace 校验作者签名。
  3. Marketplace 再用 JetBrains 证书签名分发产物。

未签名或证书被撤销的插件,安装时会出现警告。自定义插件仓库也可以签名,但不会被 Marketplace 再签,用户需要信任对应证书或 truststore。

验证签名:

./gradlew verifyPluginSignature

Release Channel

发布到非默认渠道:

intellijPlatform {
    publishing {
        channels = listOf("beta")
    }
}

常用渠道:

渠道 仓库
alpha https://plugins.jetbrains.com/plugins/alpha/list
beta https://plugins.jetbrains.com/plugins/beta/list
eap https://plugins.jetbrains.com/plugins/eap/list

非默认渠道是独立仓库,用户需要手动添加自定义插件仓库才能安装和接收更新。

Logo 会显示在 Marketplace 和 IDE Settings | Plugins 中。官方要求:

  • 文件必须是 SVG。
  • 默认文件名:pluginIcon.svg
  • 深色主题可选文件名:pluginIcon_dark.svg
  • 放在插件主 JAR 的 META-INF 目录。
  • 设计尺寸按 40x40 px 准备,会在 40x40 和 80x80 场景显示。
  • 图形四周留至少 2px 透明 padding。
  • SVG 理想大小小于 2-3 KB。
  • 不建议把位图自动转 SVG,文件会过大且质量差。
  • 确保亮色和暗色背景都可识别;必要时提供 dark 版本。

路径:

src/main/resources/META-INF/pluginIcon.svg
src/main/resources/META-INF/pluginIcon_dark.svg

2024.3+ Plugin DevKit 会检查缺失的 Plugin Logo。

Marketplace 页面

发布页应回答用户的实际问题:

  • 插件解决什么问题。
  • 支持哪些 IDE 和版本。
  • 如何开始使用。
  • 关键功能截图或 GIF。
  • 配置和权限说明。
  • 变更说明。
  • 支持渠道。
  • 隐私、网络访问和数据处理说明。

技术型插件尤其要说明兼容范围和依赖插件,减少用户在错误 IDE 中安装后的负反馈。

发布流水线建议

最小 CI:

./gradlew test
./gradlew buildPlugin
./gradlew verifyPlugin

发布 CI:

./gradlew signPlugin
./gradlew publishPlugin

门禁:

  • 只从 tag 或 release branch 发布。
  • 检查 changelog 是否更新。
  • 检查版本号是否递增。
  • 验证签名环境变量存在。
  • 对 beta/eap 渠道先发预发布。
  • 稳定后再发默认渠道。

参考来源