Giter VIP home page Giter VIP logo

sdkman-vendor-gradle-plugin's Introduction

SDKMAN! Vendor Plugin

This Gradle plugin is used by SDK Vendors to publish their own releases on SDKMAN!. Even more, they are able to announce their releases through the Broadcast API.

Vendors

A Vendor is an organisation/individual that owns a technology, and wishes to publish it's Versions on SDKMAN!

Setup

It requires some configuration in the build.gradle file of the project.

    plugins {
      id "io.sdkman.vendors" version "3.0.0"
    }

You will also need some configuration to interact with the remote API in order to publish and broadcast. Two types of configuration are supported. The first is for UNIVERSAL binaries:

    sdkman {
        candidate = "grails"
        version = "x.y.z"
        url = "https://host/grails-x.y.z.zip"
        hashtag = "grailsfw"
    }

The second type is for native platform-specific binaries:

    sdkman {
        candidate = "micronaut"
        version = "x.y.z"
        platforms = [
            "MAC_OSX":"https://host/micronaut-x.y.z-macosx.zip",
            "WINDOWS_64":"https://host/micronaut-x.y.z-win.zip", 
            "LINUX_64":"https://host/micronaut-x.y.z-linux64.zip", 
        ]
        hashtag = "micronaut"
    }

We currently support the following platforms:

  • MAC_OSX
  • WINDOWS_64
  • LINUX_64
  • LINUX_32

By default, the plugin communicates with the https://vendors.sdkman.io service.

Credentials

The credentials for Vendors consisting of a security key and token can be obtained by raising an Issue on Github.

You can explicitly set your key and token from a Gradle property or environment variable.

    sdkman {
        consumerKey = "SOME_KEY"
        consumerToken = "SOME_TOKEN"
    }

By default, the plugin looks for your credentials in the SDKMAN_KEY and SDKMAN_TOKEN environment variables.

Other Config

All configuration above such as credentials, candidate, version, url and hashtag may be populated dynamically in the build.

candidate and version are required. url is required if you do not set platforms.

Gradle Tasks

The plugin provides the following tasks for releasing, defaulting and announcing:

  • sdkAnnounceVersion - Announce a Release on SDKMAN.
  • sdkDefaultVersion - Make an existing Candidate Version the new Default on SDKMAN.
  • sdkReleaseVersion - Release a new Candidate Version on SDKMAN.
  • sdkMajorRelease - Convenience task performs a Major Release consisting of Release, Default and Announce combined.
  • sdkMinorRelease - Convenience task performs a Minor Release consisting of Release and Announce combined.

sdkman-vendor-gradle-plugin's People

Contributors

aadrian avatar aalmiray avatar ancho avatar big-guy avatar lhotari avatar marc0der avatar ondrazizka avatar pledbrook avatar wolfs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sdkman-vendor-gradle-plugin's Issues

Vendor keys for ktx

Hi, I'm currently working on mpetuska/ktx to bring npx capabilities to kotlin scripting ecosystem. The project is nearing first dev preview release and I'm wondering if now would be a good time to integrate with sdkman to avoid wasting time on selfinstall scripts. If so, I'd need a set of vendor secrets, please.

NodeJS

Hello,

I keep missing NodeJS in SDKMAN and as such am forced to download a separate tool just for that (nvm). I am in no way affiliated or related to nodejs project team, however I'd be happy to maintain and publish nodejs releases to sdkman.

My main concern is if that's ok with you guys (licencing and stuff...). If so, all I need are just sdkman credentials to publish updates under.

Can't defer sdkM*Release task settings

The plugin is currently too eager in checking settings, i.e. it's done at configuration time. This precludes fully dynamic configuration which can occur during the execution phase. A similar issue was raised for the Lazybones plugin.

My specific requirement is that I want to allow developers to install and test Lazybones locally without requiring credentials for Bintray and SDK.env. You only need those credentials when publishing a new release. To handle this case, I configure the credentials within a taskGraph.whenReady block. Unfortunately that's just not possible with the plugin currently.

Gradle Kotlin Script compatibility

Hi,

how may I convert this for build.gradle.kts?

sdkman {
   api = "https://vendors.sdkman.io/"
   consumerKey = "SOME_KEY"
   consumerToken = "SOME_TOKEN"
   candidate = "grails"
   version = "x.y.z"
   url = "http://dist.springframework.org.s3.amazonaws.com/release/GRAILS/grails-x.y.z.zip"
   hashtag = "#grailsfw"
}

Version 1.2.0 not compatible with jdk 11

Switching to 1.2.0 with jdk 11 fails with following exception:

* What went wrong:
A problem occurred evaluating script.
> Failed to apply plugin [id 'io.sdkman.vendors']
   > Could not create task ':jbake-dist:sdkReleaseVersion'.
      > Could not create task of type 'SdkReleaseVersionTask'.
         > javax/xml/bind/ValidationException

javax.xml.bind got removed from jdk 11

------------------------------------------------------------
Gradle 5.3.1
------------------------------------------------------------

Build time:   2019-03-28 09:09:23 UTC
Revision:     f2fae6ba563cfb772c8bc35d31e43c59a5b620c3

Kotlin:       1.3.21
Groovy:       2.5.4
Ant:          Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM:          11.0.2 (Oracle Corporation 11.0.2+9)
OS:           Linux 4.19.0-4-amd64 amd64

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.