forked from guardian/media-atom-maker
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.sbt
139 lines (118 loc) · 5.43 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
import com.typesafe.sbt.SbtNativePackager.autoImport.maintainer
import com.typesafe.sbt.packager.archetypes.ServerLoader.Systemd
import com.typesafe.sbt.packager.debian.DebianPlugin.autoImport.debianPackageDependencies
import sbt.Keys._
import StateMachine._
lazy val commonSettings = Seq(
scalaVersion in ThisBuild := "2.11.8",
organization in ThisBuild := "com.gu",
resolvers ++= Seq("Guardian Bintray" at "https://dl.bintray.com/guardian/editorial-tools",
"Sonatype OSS" at "http://oss.sonatype.org/content/repositories/releases/",
"Sonatype OSS Snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/"
),
// silly SBT command to work-around lack of support for root projects that are not in the "root" folder
// https://github.com/sbt/sbt/issues/2405
onLoad in Global := (onLoad in Global).value andThen (Command.process("project root", _))
)
lazy val common = (project in file("common"))
.settings(commonSettings,
name := "media-atom-common",
unmanagedBase := baseDirectory.value / "common" / "lib",
unmanagedJars in Compile += file("common/lib/google-api-services-youtubePartner-v1-rev20160726-java-1.22.0-sources.jar"),
unmanagedJars in Compile += file("common/lib/google-api-services-youtubePartner-v1-rev20160726-java-1.22.0.jar"),
libraryDependencies ++= Dependencies.commonDependencies
)
lazy val app = (project in file("."))
.dependsOn(common)
.enablePlugins(PlayScala, SbtWeb, BuildInfoPlugin, JDebPackaging)
.settings(commonSettings,
name := "media-atom-maker",
libraryDependencies ++= Dependencies.appDependencies,
aggregate in run := false,
javaOptions in Universal ++= Seq(
"-Dpidfile.path=/dev/null"
),
buildInfoKeys := Seq[BuildInfoKey](
name,
BuildInfoKey.constant("gitCommitId", Option(System.getenv("BUILD_VCS_NUMBER")) getOrElse(try {
"git rev-parse HEAD".!!.trim
} catch {
case e: Exception => "unknown"
}))
),
buildInfoPackage := "app",
serverLoading in Debian := Systemd,
debianPackageDependencies := Seq("openjdk-8-jre-headless"),
maintainer := "Digital CMS <digitalcms.dev@guardian.co.uk>",
packageSummary := "media-atom-maker",
packageDescription := """making media atoms""",
pipelineStages := Seq(digest, gzip)
)
lazy val uploader = (project in file("uploader"))
.dependsOn(common)
.enablePlugins(JavaAppPackaging)
.settings(commonSettings,
name := "media-atom-uploader",
libraryDependencies ++= Dependencies.uploaderDependencies,
topLevelDirectory in Universal := None,
packageName in Universal := normalizedName.value,
lambdas in Compile := Map(
"GetChunkFromS3" -> LambdaConfig(
description = "Checks to see if a chunk of video has been uploaded to S3"
),
"UploadChunkToYouTube" -> LambdaConfig(
description = "Uploads a chunk of video to YouTube"
),
"CreateCompleteVideoInS3" -> LambdaConfig(
description = "Uses multipart copy to combine all the chunks in S3 into a single key"
),
"SendToPluto" -> LambdaConfig(
description = "Sends a complete video to Pluto for ingestion"
),
"SendToTranscoder" -> LambdaConfig(
description = "Sends a complete video to the AWS transcoder"
),
"GetTranscodingProgress" -> LambdaConfig(
description = "Polls the AWS transcoder"
),
"AddAssetToAtom" -> LambdaConfig(
description = "Adds the resulting asset to the atom"
)
),
resourceGenerators in Compile += compileTemplate.taskValue
)
lazy val integrationTests = (project in file("integration-tests"))
.dependsOn(common)
.settings(commonSettings,
name := "integration-tests",
libraryDependencies ++= Dependencies.integrationTestDependencies,
logBuffered in Test := false,
parallelExecution in Test := false
)
lazy val expirer = (project in file("expirer"))
.dependsOn(common % "compile->compile;test->test")
.enablePlugins(JavaAppPackaging)
.settings(commonSettings,
name := "media-atom-expirer",
libraryDependencies ++= Dependencies.expirerDependencies,
topLevelDirectory in Universal := None,
packageName in Universal := normalizedName.value
)
val jsTargetDir = "target/riffraff/packages"
val plutoMessageIngestion = "pluto-message-ingestion"
lazy val root = (project in file("root"))
.aggregate(common, app, uploader, expirer)
.enablePlugins(RiffRaffArtifact)
.settings(
riffRaffUploadArtifactBucket := Option("riffraff-artifact"),
riffRaffUploadManifestBucket := Option("riffraff-builds"),
riffRaffManifestProjectName := "media-service:media-atom-maker",
riffRaffArtifactResources := Seq(
(packageBin in Debian in app).value -> s"${(name in app).value}/${(name in app).value}.deb",
(packageBin in Universal in uploader).value -> s"media-atom-upload-actions/${(packageBin in Universal in uploader).value.getName}",
(packageBin in Universal in expirer).value -> s"${(name in expirer).value}/${(packageBin in Universal in expirer).value.getName}",
(baseDirectory in Global in app).value / s"$plutoMessageIngestion/$jsTargetDir/$plutoMessageIngestion/$plutoMessageIngestion.zip" -> s"$plutoMessageIngestion/$plutoMessageIngestion.zip",
(baseDirectory in Global in app).value / "conf/riff-raff.yaml" -> "riff-raff.yaml",
(resourceManaged in Compile in uploader).value / "media-atom-pipeline.yaml" -> "media-atom-pipeline-cloudformation/media-atom-pipeline.yaml"
)
)