-
Notifications
You must be signed in to change notification settings - Fork 4
/
build.sbt
162 lines (144 loc) · 6.81 KB
/
build.sbt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
import com.typesafe.sbt.packager.archetypes.systemloader.ServerLoader.Systemd
import play.sbt.PlayImport.PlayKeys._
import sbt.Keys.libraryDependencies
import scala.concurrent.duration.DurationInt
// common settings (apply to all projects)
ThisBuild / organization := "com.gu"
ThisBuild / version := "0.5.0"
ThisBuild / scalaVersion := "2.13.10"
ThisBuild / scalacOptions ++= Seq("-deprecation", "-feature", "-unchecked", "-Xfatal-warnings")
resolvers += DefaultMavenRepository
val awsSdkVersion = "1.12.772"
val playJsonVersion = "3.0.1"
val jacksonVersion = "2.17.2"
val mergeStrategySettings= assemblyMergeStrategy := {
case PathList(ps@_*) if ps.last == "module-info.class" => MergeStrategy.discard
case _ => MergeStrategy.first
}
lazy val hq = (project in file("hq"))
.enablePlugins(PlayScala, SbtWeb, JDebPackaging, SystemdPlugin)
.disablePlugins(sbtassembly.AssemblyPlugin)
.settings(
name := """security-hq""",
playDefaultPort := 9090,
fileDescriptorLimit := Some("16384"), // This increases the number of open files allowed when running in AWS
libraryDependencies ++= Seq(
ws,
filters,
"com.gu.play-googleauth" %% "play-v30" % "4.0.0",
"com.gu.play-secret-rotation" %% "play-v30" % "7.1.0",
"com.gu.play-secret-rotation" %% "aws-parameterstore-sdk-v1" % "7.1.0",
"joda-time" % "joda-time" % "2.11.2",
"org.typelevel" %% "cats-core" % "2.8.0",
"com.github.tototoshi" %% "scala-csv" % "1.3.10",
"com.amazonaws" % "aws-java-sdk-s3" % awsSdkVersion,
"com.amazonaws" % "aws-java-sdk-iam" % awsSdkVersion,
"com.amazonaws" % "aws-java-sdk-sts" % awsSdkVersion,
"com.amazonaws" % "aws-java-sdk-support" % awsSdkVersion,
"com.amazonaws" % "aws-java-sdk-ec2" % awsSdkVersion,
"com.amazonaws" % "aws-java-sdk-cloudformation" % awsSdkVersion,
"com.amazonaws" % "aws-java-sdk-efs" % awsSdkVersion,
"com.amazonaws" % "aws-java-sdk-cloudwatch" % awsSdkVersion,
"com.amazonaws" % "aws-java-sdk-dynamodb" % awsSdkVersion,
"com.vladsch.flexmark" % "flexmark" % "0.64.0",
"com.amazonaws" % "aws-java-sdk-sns" % awsSdkVersion,
"com.amazonaws" % "aws-java-sdk-ssm" % awsSdkVersion,
"io.reactivex" %% "rxscala" % "0.27.0",
"com.fasterxml.jackson.core" % "jackson-databind" % jacksonVersion,
"com.fasterxml.jackson.module" %% "jackson-module-scala" % jacksonVersion,
"org.scalatest" %% "scalatest" % "3.2.14" % Test,
"org.scalatestplus" %% "scalacheck-1-15" % "3.2.11.0" % Test,
"org.scalacheck" %% "scalacheck" % "1.17.0" % Test,
"com.github.alexarchambault" %% "scalacheck-shapeless_1.15" % "1.3.0" % Test,
"com.gu" %% "anghammarad-client" % "1.8.1",
"ch.qos.logback" % "logback-classic" % "1.4.14",
// logstash-logback-encoder brings in version 2.11.0
// exclude transitive dependency to avoid a runtime exception:
// `com.fasterxml.jackson.databind.JsonMappingException: Scala module 2.10.2 requires Jackson Databind version >= 2.10.0 and < 2.11.0`
"net.logstash.logback" % "logstash-logback-encoder" % "7.3" exclude("com.fasterxml.jackson.core", "jackson-databind"),
"com.gu" %% "janus-config-tools" % "0.0.6"
),
Assets / pipelineStages := Seq(digest),
// exclude docs
Compile / doc / sources := Seq.empty,
Universal / packageName := "security-hq",
// include beanstalk config files in the zip produced by `dist`
Universal / mappings ++=
(baseDirectory.value / "beanstalk" * "*" get)
.map(f => f -> s"beanstalk/${f.getName}"),
// include upstart config files in the zip produced by `dist`
Universal / mappings ++=
(baseDirectory.value / "upstart" * "*" get)
.map(f => f -> s"upstart/${f.getName}"),
// include systemd config files in the zip produced by `dist`
Universal / mappings ++=
(baseDirectory.value / "systemd" * "*" get)
.map(f => f -> s"systemd/${f.getName}"),
Compile / unmanagedResourceDirectories += baseDirectory.value / "markdown",
Test / unmanagedSourceDirectories += baseDirectory.value / "test" / "jars",
Test / parallelExecution := false,
Test / fork := false,
Debian / serverLoading := Some(Systemd),
debianPackageDependencies := Seq("java-11-amazon-corretto-jdk:arm64"),
maintainer := "Security Team <[email protected]>",
packageSummary := "Security HQ app.",
packageDescription := """Deb for Security HQ - the Guardian's service to centralise security information for our AWS accounts.""",
Universal / javaOptions ++= Seq(
"-Dpidfile.path=/dev/null",
"-Dconfig.file=/etc/gu/security-hq.conf",
"-J-XX:+UseCompressedOops",
"-J-XX:+UseConcMarkSweepGC",
"-J-XX:NativeMemoryTracking=detail",
"-J-XX:MaxRAMPercentage=50",
"-J-XX:InitialRAMPercentage=50",
"-XX:NewRatio=3",
"-J-XX:MaxMetaspaceSize=300m",
"-J-Xlog:gc*",
s"-J-Xlog:gc:/var/log/${packageName.value}/gc.log"
),
mergeStrategySettings
)
// More will go here!
lazy val commonLambdaSettings = Seq(
Universal / topLevelDirectory := None,
mergeStrategySettings
)
// exclude this key from the linting (unused keys) as it is incorrectly flagged
Global / excludeLintKeys += Universal / topLevelDirectory
lazy val lambdaCommon = (project in file("lambda/common")).
settings(commonLambdaSettings: _*).
settings(
name := """lambda-common""",
libraryDependencies ++= Seq(
"com.amazonaws" % "aws-lambda-java-events" % "3.14.0",
"com.amazonaws" % "aws-lambda-java-core" % "1.2.3",
"com.amazonaws" % "aws-java-sdk-lambda" % awsSdkVersion,
"com.amazonaws" % "aws-java-sdk-config" % awsSdkVersion,
"com.amazonaws" % "aws-java-sdk-elasticloadbalancing" % awsSdkVersion,
"com.amazonaws" % "aws-java-sdk-config" % awsSdkVersion,
"com.amazonaws" % "aws-java-sdk-sns" % awsSdkVersion,
"com.amazonaws" % "aws-java-sdk-sts" % awsSdkVersion,
"com.amazonaws" % "aws-java-sdk-s3" % awsSdkVersion,
"org.scalatest" %% "scalatest" % "3.2.15" % Test,
"org.playframework" %% "play-json" % playJsonVersion,
"com.typesafe.scala-logging" %% "scala-logging" % "3.9.5",
"ch.qos.logback" % "logback-classic" % "1.4.14",
"com.fasterxml.jackson.core" % "jackson-databind" % jacksonVersion
)
)
lazy val lambdaSecurityGroups = (project in file("lambda/security-groups")).
settings(commonLambdaSettings: _*).
dependsOn(lambdaCommon % "compile->compile;test->test").
settings(
name := """securitygroups-lambda""",
assembly / assemblyJarName := s"${name.value}-${version.value}.jar",
libraryDependencies ++= Seq(
"com.gu" %% "anghammarad-client" % "1.8.1"
)
)
lazy val root = (project in file(".")).
aggregate(hq, lambdaCommon, lambdaSecurityGroups).
settings(
name := """security-hq"""
)
addCommandAlias("dependency-tree", "dependencyTree")