ベンダー
SDKMAN! は、SDKベンダーが候補リリースをプラットフォームに公開できるという点でユニークです。 SDKMAN! でのリリースのあらゆる側面を管理するために使用できる安全な API を提供しています。 このような側面には、新しいバージョンの**リリース**、既存のバージョンの**デフォルト**(安定版)としての設定、SDKMAN! CLI ブロードキャストおよび Twitter フィードでのリリースの**告知**が含まれます。
操作
API は、3 つの基本操作を可能にするシンプルな 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
マルチプラットフォームバイナリディストリビューション
ユニバーサルバイナリディストリビューションとマルチプラットフォームバイナリディストリビューションの両方をサポートしています。 ユニバーサルバイナリはすべてのプラットフォームで実行されるため、API に単一の SDK アーカイブのみを公開する必要があります。 マルチプラットフォーム 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
として公開され、2 つのチェックサムを持つ 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
。 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 ページを参照してください。