blob: cca0dd8061f6cb1d2fb0e62af25a2c42f38b890f [file] [log] [blame]
/*
* 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.
*/
apply plugin: 'scala'
apply plugin: 'application'
apply plugin: 'eclipse'
apply plugin: 'maven-publish'
apply plugin: 'org.scoverage'
apply plugin: 'com.lightbend.akka.grpc.gradle'
ext.dockerImageName = 'scheduler'
apply from: '../../gradle/docker.gradle'
distDocker.dependsOn ':common:scala:distDocker', 'distTar'
project.archivesBaseName = "openwhisk-scheduler"
scoverage {
scoverageVersion.set("${gradle.scala.scoverageVersion}")
scoverageScalaVersion.set("${gradle.scala.scoverageScalaVersion}")
}
ext.coverageDirs = [
"${buildDir}/classes/scala/scoverage",
"${project(':common:scala').buildDir.absolutePath}/classes/scala/scoverage"
]
buildscript {
repositories {
mavenLocal()
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
// see https://plugins.gradle.org/plugin/com.lightbend.akka.grpc.gradle
// for the currently latest version.
classpath 'com.lightbend.akka.grpc:akka-grpc-gradle-plugin:1.0.2'
}
}
protobuf {
protoc {
if (osdetector.os == "osx") {
artifact = 'com.google.protobuf:protoc:3.11.4:osx-x86_64'
} else {
artifact = 'com.google.protobuf:protoc:3.11.4'
}
}
}
// Define a separate configuration for managing the dependency on Jetty ALPN agent.
configurations {
alpnagent
}
dependencies {
configurations.all {
resolutionStrategy.force "com.lihaoyi:fastparse_${gradle.scala.depVersion}:2.3.0"
resolutionStrategy.force "com.typesafe.akka:akka-http-core_${gradle.scala.depVersion}:${gradle.akka_http.version}"
resolutionStrategy.force "com.typesafe.akka:akka-http_${gradle.scala.depVersion}:${gradle.akka_http.version}"
resolutionStrategy.force "com.typesafe.akka:akka-http2-support_${gradle.scala.depVersion}:${gradle.akka_http.version}"
resolutionStrategy.force "com.typesafe.akka:akka-http-spray-json_${gradle.scala.depVersion}:${gradle.akka_http.version}"
resolutionStrategy.force "com.typesafe.akka:akka-parsing_${gradle.scala.depVersion}:${gradle.akka_http.version}"
resolutionStrategy.force "com.typesafe.akka:akka-http_${gradle.scala.depVersion}:${gradle.akka_http.version}"
}
implementation "org.scala-lang:scala-library:${gradle.scala.version}"
implementation project(':common:scala')
implementation "io.altoo:akka-kryo-serialization_${gradle.scala.depVersion}:1.0.0"
implementation "com.lightbend.akka.management:akka-management-cluster-bootstrap_${gradle.scala.depVersion}:${gradle.akka_management.version}"
implementation "com.lightbend.akka.discovery:akka-discovery-kubernetes-api_${gradle.scala.depVersion}:${gradle.akka_management.version}"
}
// workaround for akka-grpc
// https://github.com/akka/akka-grpc/issues/786
printProtocLogs.doFirst {
mkdir "$buildDir"
file("$buildDir/akka-grpc-gradle-plugin.log").text = "x"
mkdir "$project.rootDir/build"
file("$project.rootDir/build/akka-grpc-gradle-plugin.log").text = "x"
}
printProtocLogs.configure {
mkdir "$buildDir"
file("$buildDir/akka-grpc-gradle-plugin.log").text = "x"
mkdir "$project.rootDir/build"
file("$project.rootDir/build/akka-grpc-gradle-plugin.log").text = "x"
}
mainClassName = "org.apache.openwhisk.core.scheduler.Scheduler"
applicationDefaultJvmArgs = ["-Djava.security.egd=file:/dev/./urandom"]
// Explictly declare task dependencies
tasks.named("processResources") {
dependsOn tasks.named("extractProto")
}
tasks.named("processScoverageResources") {
dependsOn tasks.named("extractScoverageProto")
}