メインコンテンツにスキップ

ベンダー

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 ページを参照してください。