供應商
SDKMAN! 的獨特之處在於它賦予 SDK 供應商在我們的平台上發布其候選版本的權力。我們提供了一個安全的 API,可用於管理 SDKMAN! 上發布版本的所有方面。這些方面包括發布新版本、將現有版本設置為預設(穩定)以及在 SDKMAN! CLI 廣播和 Twitter 消息來源上公告發布。
操作
API 是一個簡單的 JSON REST API,允許三個基本操作
- 發布新的候選版本
- 設定候選版本的預設值
- 廣播發布訊息
存取
這是一個安全的 API,需要適當的憑證才能執行上述操作。有興趣在 SDKMAN! 上提供其 SDK 的供應商將根據具體情況獲得存取權限。如果您想在 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 可供下載。https://git.io/release
。網址可以指向 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 頁面。