|
| 1 | +lazy val noPublishSettings = Seq( |
| 2 | + publish := (), |
| 3 | + publishLocal := (), |
| 4 | + publishArtifact := false |
| 5 | +) |
| 6 | + |
1 | 7 | lazy val root = (project in file("."))
|
2 | 8 | .settings(mainClass in Universal := Some("org.scalaexercises.evaluator.EvaluatorServer"))
|
3 | 9 | .settings(stage <<= (stage in Universal in `evaluator-server`))
|
4 | 10 | .settings(noPublishSettings: _*)
|
5 |
| - .aggregate( |
6 |
| - `evaluator-server`, |
7 |
| - `evaluator-shared-jvm`, |
8 |
| - `evaluator-shared-js`, |
9 |
| - `evaluator-client-jvm`, |
10 |
| - `evaluator-client-js`) |
| 11 | + .aggregate(`evaluator-server`, `evaluator-shared-jvm`, `evaluator-shared-js`, `evaluator-client-jvm`, `evaluator-client-js`) |
11 | 12 |
|
12 | 13 | lazy val `evaluator-shared` = (crossProject in file("shared"))
|
13 | 14 | .enablePlugins(AutomateHeaderPlugin)
|
14 | 15 | .settings(name := "evaluator-shared")
|
15 | 16 |
|
16 | 17 | lazy val `evaluator-shared-jvm` = `evaluator-shared`.jvm
|
17 |
| -lazy val `evaluator-shared-js` = `evaluator-shared`.js |
| 18 | +lazy val `evaluator-shared-js` = `evaluator-shared`.js |
| 19 | + |
| 20 | +lazy val scalaJSSettings = Seq( |
| 21 | + requiresDOM := false, |
| 22 | + scalaJSUseRhino := false, |
| 23 | + jsEnv := NodeJSEnv().value, |
| 24 | + libraryDependencies ++= Seq( |
| 25 | + "fr.hmil" %%% "roshttp" % v('roshttp), |
| 26 | + "org.typelevel" %%% "cats-free" % v('cats), |
| 27 | + "io.circe" %%% "circe-core" % v('circe), |
| 28 | + "io.circe" %%% "circe-generic" % v('circe), |
| 29 | + "io.circe" %%% "circe-parser" % v('circe) |
| 30 | + ) |
| 31 | +) |
18 | 32 |
|
19 | 33 | lazy val `evaluator-client` = (crossProject in file("client"))
|
20 | 34 | .dependsOn(`evaluator-shared`)
|
21 | 35 | .enablePlugins(AutomateHeaderPlugin)
|
22 | 36 | .settings(
|
23 | 37 | name := "evaluator-client",
|
24 | 38 | libraryDependencies ++= Seq(
|
25 |
| - %%("roshttp"), |
26 |
| - %%("cats-free"), |
27 |
| - %%("circe-core"), |
28 |
| - %%("circe-generic"), |
29 |
| - %%("circe-parser"), |
30 |
| - %%("log4s"), |
31 |
| - %("slf4j-simple"), |
32 |
| - %%("scalatest") % "test" |
| 39 | + "fr.hmil" %% "roshttp" % v('roshttp), |
| 40 | + "org.typelevel" %% "cats-free" % v('cats), |
| 41 | + "io.circe" %% "circe-core" % v('circe), |
| 42 | + "io.circe" %% "circe-generic" % v('circe), |
| 43 | + "io.circe" %% "circe-parser" % v('circe), |
| 44 | + "org.log4s" %% "log4s" % v('log4s), |
| 45 | + "org.slf4j" % "slf4j-simple" % v('slf4j), |
| 46 | + // Testing libraries |
| 47 | + "org.scalatest" %% "scalatest" % v('scalaTest) % "test" |
33 | 48 | )
|
34 |
| - ) |
35 |
| - .jsSettings(sharedJsSettings: _*) |
| 49 | +) |
| 50 | + .jsSettings(scalaJSSettings: _*) |
36 | 51 |
|
37 | 52 | lazy val `evaluator-client-jvm` = `evaluator-client`.jvm
|
38 |
| -lazy val `evaluator-client-js` = `evaluator-client`.js |
| 53 | +lazy val `evaluator-client-js` = `evaluator-client`.js |
39 | 54 |
|
40 | 55 | lazy val `evaluator-server` = (project in file("server"))
|
41 | 56 | .dependsOn(`evaluator-shared-jvm`)
|
42 | 57 | .enablePlugins(JavaAppPackaging)
|
43 | 58 | .enablePlugins(AutomateHeaderPlugin)
|
44 | 59 | .enablePlugins(sbtdocker.DockerPlugin)
|
45 |
| - .enablePlugins(BuildInfoPlugin) |
46 | 60 | .settings(noPublishSettings: _*)
|
47 | 61 | .settings(
|
48 | 62 | name := "evaluator-server",
|
49 | 63 | libraryDependencies ++= Seq(
|
50 |
| - %%("monix"), |
51 |
| - %%("circe-core"), |
52 |
| - %%("circe-generic"), |
53 |
| - %%("circe-parser"), |
54 |
| - %%("log4s"), |
55 |
| - %("slf4j-simple"), |
56 |
| - %%("http4s-dsl", http4sV), |
57 |
| - %%("http4s-blaze-server", http4sV), |
58 |
| - %%("http4s-blaze-client", http4sV), |
59 |
| - %%("http4s-circe", http4sV), |
60 |
| - %("config"), |
61 |
| - %%("jwt-core"), |
62 |
| - "io.get-coursier" %% "coursier" % "1.0.0-M15-3", |
63 |
| - "io.get-coursier" %% "coursier-cache" % "1.0.0-M15-3", |
64 |
| - %%("scalatest") % "test" |
| 64 | + "io.monix" %% "monix" % v('monix), |
| 65 | + "org.http4s" %% "http4s-dsl" % v('http4s), |
| 66 | + "org.http4s" %% "http4s-blaze-server" % v('http4s), |
| 67 | + "org.http4s" %% "http4s-blaze-client" % v('http4s), |
| 68 | + "org.http4s" %% "http4s-circe" % v('http4s), |
| 69 | + "io.circe" %% "circe-core" % v('circe), |
| 70 | + "io.circe" %% "circe-generic" % v('circe), |
| 71 | + "io.circe" %% "circe-parser" % v('circe), |
| 72 | + "com.typesafe" % "config" % v('config), |
| 73 | + "com.pauldijou" %% "jwt-core" % v('jwtcore), |
| 74 | + "org.log4s" %% "log4s" % v('log4s), |
| 75 | + "org.slf4j" % "slf4j-simple" % v('slf4j), |
| 76 | + "io.get-coursier" %% "coursier" % v('coursier), |
| 77 | + "io.get-coursier" %% "coursier-cache" % v('coursier), |
| 78 | + "org.scalatest" %% "scalatest" % v('scalaTest) % "test" |
65 | 79 | ),
|
66 |
| - assemblyJarName in assembly := "evaluator-server.jar", |
67 |
| - buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, sbtVersion), |
68 |
| - buildInfoPackage := "org.scalaexercises.evaluator" |
| 80 | + assemblyJarName in assembly := "evaluator-server.jar" |
69 | 81 | )
|
70 | 82 | .settings(dockerSettings)
|
71 |
| - .settings(scalaMacroDependencies: _*) |
| 83 | + .settings(compilerDependencySettings: _*) |
72 | 84 |
|
73 | 85 | lazy val `smoketests` = (project in file("smoketests"))
|
74 | 86 | .dependsOn(`evaluator-server`)
|
75 |
| - .settings(noPublishSettings: _*) |
76 | 87 | .settings(
|
77 | 88 | name := "evaluator-server-smoke-tests",
|
78 | 89 | libraryDependencies ++= Seq(
|
79 |
| - %%("circe-core"), |
80 |
| - %%("circe-generic"), |
81 |
| - %%("circe-parser"), |
82 |
| - %%("http4s-blaze-client", http4sV), |
83 |
| - %%("http4s-circe", http4sV), |
84 |
| - %%("jwt-core"), |
85 |
| - %%("scalatest") % "test" |
| 90 | + "org.scalatest" %% "scalatest" % v('scalaTest) % "test", |
| 91 | + "org.http4s" %% "http4s-blaze-client" % v('http4s), |
| 92 | + "org.http4s" %% "http4s-circe" % v('http4s), |
| 93 | + "io.circe" %% "circe-core" % v('circe), |
| 94 | + "io.circe" %% "circe-generic" % v('circe), |
| 95 | + "io.circe" %% "circe-parser" % v('circe), |
| 96 | + "com.pauldijou" %% "jwt-core" % v('jwtcore) |
86 | 97 | )
|
| 98 | + |
87 | 99 | )
|
88 | 100 |
|
89 |
| -onLoad in Global := (Command |
90 |
| - .process("project evaluator-server", _: State)) compose (onLoad in Global).value |
91 |
| -addCommandAlias( |
92 |
| - "publishSignedAll", |
93 |
| - ";evaluator-sharedJS/publishSigned;evaluator-sharedJVM/publishSigned;evaluator-clientJS/publishSigned;evaluator-clientJVM/publishSigned" |
94 |
| -) |
| 101 | +onLoad in Global := (Command.process("project evaluator-server", _: State)) compose (onLoad in Global).value |
| 102 | +addCommandAlias("publishSignedAll", ";evaluator-sharedJS/publishSigned;evaluator-sharedJVM/publishSigned;evaluator-clientJS/publishSigned;evaluator-clientJVM/publishSigned") |
95 | 103 |
|
96 |
| -pgpPassphrase := Some(getEnvVar("PGP_PASSPHRASE").getOrElse("").toCharArray) |
97 |
| -pgpPublicRing := file(s"$gpgFolder/pubring.gpg") |
98 |
| -pgpSecretRing := file(s"$gpgFolder/secring.gpg") |
| 104 | +lazy val dockerSettings = Seq( |
| 105 | + docker <<= docker dependsOn assembly, |
| 106 | + dockerfile in docker := { |
| 107 | + |
| 108 | + val artifact: File = assembly.value |
| 109 | + val artifactTargetPath = artifact.name |
| 110 | + |
| 111 | + sbtdocker.immutable.Dockerfile.empty |
| 112 | + .from("ubuntu:latest") |
| 113 | + .run("apt-get", "update") |
| 114 | + .run("apt-get", "install", "-y", "openjdk-8-jdk") |
| 115 | + .run("useradd", "-m", "evaluator") |
| 116 | + .user("evaluator") |
| 117 | + .add(artifact, artifactTargetPath) |
| 118 | + .cmdRaw(s"java -Dhttp.port=$$PORT -Deval.auth.secretKey=$$EVAL_SECRET_KEY -jar $artifactTargetPath") |
| 119 | + }, |
| 120 | + imageNames in docker := Seq(ImageName(repository = "registry.heroku.com/scala-evaluator/web")) |
| 121 | +) |
0 commit comments