| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| import ReleaseTransformations._ |
| import PgpKeys._ |
| import sbt.complete.Parsers.spaceDelimited |
| |
| name := "s2graph" |
| |
| lazy val commonSettings = Seq( |
| organization := "org.apache.s2graph", |
| scalaVersion := "2.11.8", |
| isSnapshot := version.value.endsWith("-SNAPSHOT"), |
| scalacOptions := Seq("-language:postfixOps", "-unchecked", "-deprecation", "-feature", "-Xlint", "-Xlint:-missing-interpolator", "-target:jvm-1.8"), |
| javaOptions ++= collection.JavaConversions.propertiesAsScalaMap(System.getProperties).map { case (key, value) => "-D" + key + "=" + value }.toSeq, |
| testOptions in Test += Tests.Argument("-oDF"), |
| concurrentRestrictions in Global += Tags.limit(Tags.Test, 1), |
| parallelExecution in Test := false, |
| libraryDependencies ++= Common.loggingRuntime, |
| unmanagedClasspath in Runtime <+= (resourceDirectory in Compile).map(Attributed.blank), |
| resolvers += Resolver.mavenLocal |
| ) ++ Publisher.defaultSettings |
| |
| Revolver.settings |
| |
| lazy val s2rest_play = project.enablePlugins(PlayScala).disablePlugins(PlayLogback) |
| .dependsOn(s2core, s2counter_core) |
| .settings(commonSettings: _*) |
| .settings(testOptions in Test += Tests.Argument("sequential")) |
| .settings(dockerSettings: _*) |
| .enablePlugins(sbtdocker.DockerPlugin, JavaAppPackaging) |
| |
| lazy val s2rest_netty = project |
| .dependsOn(s2core) |
| .settings(commonSettings: _*) |
| .settings(dockerSettings: _*) |
| .enablePlugins(sbtdocker.DockerPlugin, JavaAppPackaging) |
| |
| lazy val s2graphql = project |
| .dependsOn(s2core) |
| .settings(commonSettings: _*) |
| .settings(dockerSettings: _*) |
| .enablePlugins(sbtdocker.DockerPlugin, JavaAppPackaging) |
| |
| lazy val s2core = project.settings(commonSettings: _*) |
| |
| lazy val spark = project.settings(commonSettings: _*) |
| |
| //lazy val loader = project.dependsOn(s2core, spark) |
| // .settings(commonSettings: _*) |
| |
| lazy val s2counter_core = project.dependsOn(s2core) |
| .settings(commonSettings: _*) |
| |
| lazy val s2counter_loader = project.dependsOn(s2counter_core, spark) |
| .settings(commonSettings: _*) |
| |
| lazy val s2jobs = project.dependsOn(s2core) |
| .settings(commonSettings: _*) |
| |
| lazy val s2graph_gremlin = project.dependsOn(s2core) |
| .settings(commonSettings: _*) |
| |
| lazy val root = (project in file(".")) |
| .aggregate(s2core, s2rest_play, s2jobs) |
| .dependsOn(s2rest_play, s2rest_netty, s2jobs, s2counter_loader, s2graphql) // this enables packaging on the root project |
| .settings(commonSettings: _*) |
| |
| lazy val dockerSettings = Seq( |
| dockerfile in docker := { |
| val appDir: File = stage.value |
| val targetDir = s"/u/apps/${name.value}" |
| |
| new Dockerfile { |
| from("java:8") |
| entryPoint(s"$targetDir/bin/${executableScriptName.value}") |
| env("EXTRA_JARS", "") |
| env("ZONEINFO", "Asia/Seoul") |
| copy(appDir, targetDir) |
| workDir(targetDir) |
| expose(9000) |
| } |
| }, |
| bashScriptExtraDefines ++= Seq( |
| s"""cp $$EXTRA_JARS/* /u/apps/${name.value}/lib""", |
| "ln -sf /usr/share/zoneinfo/$ZONEINFO /etc/localtime; date" |
| ), |
| scriptClasspath += "*", |
| imageNames in docker := Seq( |
| ImageName(s"s2graph/${name.value}:${version.value}") |
| ), |
| buildOptions in docker := BuildOptions( |
| cache = false, |
| removeIntermediateContainers = BuildOptions.Remove.Always, |
| pullBaseImage = BuildOptions.Pull.Always |
| ) |
| ) |
| |
| lazy val runRatTask = inputKey[Unit]("Runs Apache rat on S2Graph") |
| |
| runRatTask := { |
| // pass absolute path for apache-rat jar. |
| val args: Seq[String] = spaceDelimited("<arg>").parsed |
| s"sh dev/run-rat.sh ${args.head}" ! |
| } |
| |
| Packager.defaultSettings |
| |
| publishSigned := { |
| (publishSigned in s2rest_play).value |
| (publishSigned in s2rest_netty).value |
| (publishSigned in s2core).value |
| (publishSigned in spark).value |
| (publishSigned in s2jobs).value |
| (publishSigned in s2counter_core).value |
| (publishSigned in s2counter_loader).value |
| } |
| |
| releaseProcess := Seq[ReleaseStep]( |
| checkSnapshotDependencies, // : ReleaseStep |
| inquireVersions, // : ReleaseStep |
| runTest, // : ReleaseStep |
| setReleaseVersion, // : ReleaseStep |
| commitReleaseVersion, // : ReleaseStep, performs the initial git checks |
| tagRelease, // : ReleaseStep |
| publishArtifacts, // : ReleaseStep, checks whether `publishTo` is properly set up |
| setNextVersion, // : ReleaseStep |
| commitNextVersion |
| ) |
| |
| releasePublishArtifactsAction := publishSigned.value |
| |
| mainClass in Compile := None |
| |
| parallelExecution in ThisBuild := false |