Skip to content

Vendor onboarding process

Marco Vermeulen edited this page Dec 30, 2022 · 13 revisions

Several steps are required for vendor onboarding on SDKMAN!

Prerequisites

  • The proposed candidate is distributed as a well-formed SDK archive.
  • You have a public GPG key available for sharing encrypted credentials.
  • You are an owner or maintainer of the candidate to be published.

Create the new candidate

Please create a new candidate raising a PR on our database migrations project. As shown below for this bogus candidate, the migration should live in a new changelog file and declare a single changeset. Do not add any versions, as you will use the API for this purpose later. Once merged, the candidate will appear in the SDKMAN CLI and on our website with a Coming Soon! annotation.

@ChangeLog(order = "004")
class BogusMigrations {
    @ChangeSet(order = "001", id = "001_add_bogus_1_2_3", author = "myGithubUser")
    def migration001(implicit db: MongoDatabase) = {
        Candidate(
          candidate = "bogus",
          name = "Bogus",
          description = "This is a fake candidate.",
          websiteUrl = "https://bogus.example.org/",
          distribution = "UNIVERSAL"
        ).insert()
    }
}

BogusMigrations.scala


NOTE

The ChangeLog has an order parameter that should be set to the next highest value in the repository. You can determine this quickly by running the following command in the database migrations repository directory:

$ grep -R --no-filename '@ChangeLog' | sort | tail -n 1

@ChangeLog(order = "099")

Choose the following number in the sequence for your new changelog. In this example, it would be 100.


Request API credentials

The SDKMAN Vendor API is used to publish, default and announce new versions. Export your armoured public GPG key, then send it to info@sdkman.io as a plain text file, and you will receive a response with an encrypted message containing API credentials.

Attempt your first release using the process outlined on our vendors page on the website. You can use several options via REST, Gradle or Maven release plugins.

Support

For help getting set up or with general troubleshooting, please join our Slack #vendors channel. If you are not an SDKMAN Slack member, feel free to sign up in your browser with our Slackin service.