供应商
SDKMAN! 的独特之处在于,它使 SDK 供应商能够在其平台上发布候选版本。我们提供了一个安全的 API,可用于管理 SDKMAN! 上发布的所有方面。这些方面包括**发布**新版本、将现有版本设置为**默认**(稳定版)以及在 SDKMAN! CLI 广播和 Twitter 订阅源上**宣布**该版本。
操作
该 API 是一个简单的 JSON REST API,允许三种基本操作
- 发布新的候选版本
- 设置候选版本的默认值
- 广播发布消息
访问
这是一个安全的 API,需要相应的凭据才能执行上述操作。将根据具体情况向有兴趣在其 SDK 在 SDKMAN! 上提供的供应商授予访问权限。如果您想在 SDKMAN! 上发布您的版本,请按照供应商入职wiki 页面,然后联系我们以获取有关设置凭据的帮助。
端点
调用 API 最简单的方法是使用curl。当然,任何其他客户端都可以用于执行 API 操作。
发布新的候选版本
这将在 SDKMAN! 上执行一个次要版本发布。它只会添加新的候选版本,但不会将其设置为该候选版本的默认版本。此端点支持POST
和DELETE
HTTP 方法。POST
端点是幂等的。
curl -X POST \
-H "Consumer-Key: CONSUMER_KEY" \
-H "Consumer-Token: CONSUMER_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"candidate": "groovy", "version": "2.4.2", "url": "https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-binary-2.4.6.zip"}' \
https://vendors.sdkman.io/release
多平台二进制分发
我们同时支持通用和多平台二进制分发。通用二进制文件可在所有平台上运行,因此您只需要将单个 SDK 存档发布到我们的 API。多平台 API 是专门针对目标平台编译的,并且需要为每个目标平台发布一个存档。我们目前支持以下平台
- LINUX_64
- LINUX_ARM64
- LINUX_32
- LINUX_ARM32SF
- LINUX_ARM32HF
- MAC_OSX
- MAC_ARM64
- WINDOWS_64
要指示目标平台,应在有效负载中包含一个带有相关平台的platform
键。如果未包含platform
,则我们假设值为UNIVERSAL
。
多供应商候选者
对于希望发布到多供应商候选者(如 Java 或 JMC)的供应商,我们要求 JSON 有效负载中存在供应商字符串。这将导致一个新的版本,该版本由$version-$vendor
组成,因此在这种情况下,它将在 SDKMAN! 上显示为11.0.10-zulu
。
校验和
对于每个发布的二进制文件,可以在有效负载中提供一个可选的checksums
映射。支持的校验和算法为
- MD5
- SHA-1
- SHA-224
- SHA-256
- SHA-384
- SHA-512
示例有效负载
一个示例有效负载演示了 Azul 作为zulu
发布的LINUX_64
的多平台 Java 二进制文件的发布,并带有两个校验和,如下所示
{
"candidate": "java",
"version": "11.0.10",
"vendor": "zulu",
"url": "https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-linux_x64.tar.gz",
"platform": "LINUX_64",
"checksums": {
"MD5": "93c9d427af64f2da8c00c9219360815b",
"SHA-256": "0bd85593bae021314378f3b146cfe36a6c9b0afd964d897c34201034ace3e785"
}
}
将现有版本设置为候选版本的默认值
当对现有候选版本调用此端点时,它将使其成为该候选版本的默认版本。这将次要版本发布变成了主要版本发布!
curl -X PUT \
-H "Consumer-Key: CONSUMER_KEY" \
-H "Consumer-Token: CONSUMER_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"candidate": "groovy", "version": "2.3.8"}' \
https://vendors.sdkman.io/default
广播结构化消息
这将在社交媒体和 SDKMAN! CLI 上发布结构化消息公告。结果将类似于:grails 3.0.0 available for download. https://git.io/release
。该 url 可以指向 github 发布页面或版本的更改日志。此消息将宣布到 SDKMAN! CLI 的广播频道,以及@sdkman_ X 订阅源。
curl -X POST \
-H "Consumer-Key: CONSUMER_KEY" \
-H "Consumer-Token: CONSUMER_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"candidate": "grails", "version": "3.0.0", "url": "https://git.io/release"}' \
https://vendors.sdkman.io/announce/struct
Gradle SDK 供应商插件
如果您不擅长使用 cURL(或 HttpClient),可以考虑使用我们的 Gradle 插件。该插件允许将发布作为 CI 构建的副作用来完成!它公开了几个有用的任务,例如
sdkReleaseVersion
sdkDefaultVersion
sdkAnnounceVersion
它还公开了将上述内容整合到单个任务中的某些便捷任务
sdkMajorRelease
:执行发布、默认和结构化公告sdkMinorRelease
:执行发布和结构化公告,不设置默认值
有关此插件的更多详细信息以及如何配置它,请参阅该项目的Github 页面。
Maven SDK 供应商插件
如果您不擅长使用 cURL(或 HttpClient)或 Gradle,可以考虑使用我们的 Maven 插件。该插件允许将发布作为 CI 构建的副作用来完成!它公开了几个有用的目标,例如
release
default
announce
它还公开了将上述内容整合到单个目标中的某些便捷目标
major-release
:执行发布、默认和结构化公告minor-release
:执行发布和结构化公告,不设置默认值
有关此插件的更多详细信息以及如何配置它,请参阅该项目的Github 页面。