Publish full installers to lightbend organization

Offline installation exceeds 50MB file limit for OSS organization.
This commit is contained in:
Eugene Yokota 2017-04-07 01:40:05 -04:00
parent 2fad446e67
commit 04bc5a9dd2
1 changed files with 34 additions and 23 deletions

View File

@ -18,13 +18,15 @@ val sbtLaunchJarLocation = SettingKey[File]("sbt-launch-jar-location")
val sbtLaunchJar = TaskKey[File]("sbt-launch-jar", "Resolves SBT launch jar")
val moduleID = (organization) apply { (o) => ModuleID(o, "sbt", sbtVersionToRelease) }
lazy val bintrayDebianUrl = settingKey[String]("API point for Debian packages")
lazy val bintrayDebianExperimentalUrl = settingKey[String]("API point for Debian experimental packages")
lazy val bintrayRpmUrl = settingKey[String]("API point for RPM packages")
lazy val bintrayRpmExperimentalUrl = settingKey[String]("API point for RPM experimental packages")
lazy val bintrayGenericPackagesUrl = settingKey[String]("API point for generic packages")
lazy val bintrayTripple = settingKey[(String, String, String)]("id, url, and pattern")
val bintrayLinuxPattern = "[module]/[revision]/[module]-[revision].[ext]"
val bintrayGenericPattern = "[module]/[revision]/[module]/[revision]/[module]-[revision].[ext]"
val bintrayDebianUrl = "https://api.bintray.com/content/sbt/debian/"
val bintrayDebianExperimentalUrl = "https://api.bintray.com/content/sbt/debian-experimental/"
val bintrayRpmUrl = "https://api.bintray.com/content/sbt/rpm/"
val bintrayRpmExperimentalUrl = "https://api.bintray.com/content/sbt/rpm-experimental/"
val bintrayGenericPackagesUrl = "https://api.bintray.com/content/sbt/native-packages/"
val bintrayReleaseAllStaged = TaskKey[Unit]("bintray-release-all-staged", "Release all staged artifacts on bintray.")
val windowsBuildId = settingKey[Int]("build id for Windows installer")
@ -173,32 +175,41 @@ def downloadUrlForVersion(v: String) = (v split "[^\\d]" flatMap (i => catching(
case _ => "http://repo.typesafe.com/typesafe/ivy-releases/org.scala-tools.sbt/sbt-launch/"+v+"/sbt-launch.jar"
}
def makePublishTo(id: String, url: String, pattern: String): Setting[_] = {
publishTo := {
val resolver = Resolver.url(id, new URL(url))(Patterns(pattern))
Some(resolver)
}
}
def makePublishToForConfig(config: Configuration) = {
val v = sbtVersionToRelease
val (id, url, pattern) =
config.name match {
case Debian.name if isExperimental => ("debian-experimental", bintrayDebianExperimentalUrl, bintrayLinuxPattern)
case Debian.name => ("debian", bintrayDebianUrl, bintrayLinuxPattern)
case Rpm.name if isExperimental => ("rpm-experimental", bintrayRpmExperimentalUrl, bintrayLinuxPattern)
case Rpm.name => ("rpm", bintrayRpmUrl, bintrayLinuxPattern)
case _ => ("native-packages", bintrayGenericPackagesUrl, bintrayGenericPattern)
}
// Add the publish to and ensure global resolvers has the resolver we just configured.
inConfig(config)(Seq(
bintrayOrganization := Some("sbt"),
bintrayRepository := id,
bintrayOrganization := {
// offline installation exceeds 50MB file limit for OSS organization
if (sbtOfflineInstall) Some("lightbend")
else Some("sbt")
},
bintrayRepository := bintrayTripple.value._1,
bintrayRepo := Bintray.cachedRepo(bintrayEnsureCredentials.value,
bintrayOrganization.value,
bintrayRepository.value),
bintrayPackage := "sbt",
makePublishTo(id, url, pattern),
bintrayDebianUrl := s"https://api.bintray.com/content/${bintrayOrganization.value.get}/debian/",
bintrayDebianExperimentalUrl := s"https://api.bintray.com/content/${bintrayOrganization.value.get}/debian-experimental/",
bintrayRpmUrl := s"https://api.bintray.com/content/${bintrayOrganization.value.get}/rpm/",
bintrayRpmExperimentalUrl := s"https://api.bintray.com/content/${bintrayOrganization.value.get}/rpm-experimental/",
bintrayGenericPackagesUrl := s"https://api.bintray.com/content/${bintrayOrganization.value.get}/native-packages/",
bintrayTripple := {
config.name match {
case Debian.name if isExperimental => ("debian-experimental", bintrayDebianExperimentalUrl.value, bintrayLinuxPattern)
case Debian.name => ("debian", bintrayDebianUrl.value, bintrayLinuxPattern)
case Rpm.name if isExperimental => ("rpm-experimental", bintrayRpmExperimentalUrl.value, bintrayLinuxPattern)
case Rpm.name => ("rpm", bintrayRpmUrl.value, bintrayLinuxPattern)
case _ => ("native-packages", bintrayGenericPackagesUrl.value, bintrayGenericPattern)
}
},
publishTo := {
val (id, url, pattern) = bintrayTripple.value
val resolver = Resolver.url(id, new URL(url))(Patterns(pattern))
Some(resolver)
},
bintrayReleaseAllStaged := bintrayRelease(bintrayRepo.value, bintrayPackage.value, version.value, sLog.value)
// Uncomment to release right after publishing
// publish <<= (publish, bintrayRepo, bintrayPackage, version, sLog) apply { (publish, bintrayRepo, bintrayPackage, version, sLog) =>