| /* |
| * 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 org.apache.tools.ant.taskdefs.condition.Os |
| |
| plugins { |
| id 'maven' |
| id 'org.scoverage' |
| id 'org.springframework.boot' version '2.1.6.RELEASE' |
| id 'scala' |
| id 'com.gorylenko.gradle-git-properties' version '2.0.0' |
| } |
| |
| ext.dockerImageName = 'standalone' |
| ext.dockerBuildArgs = [ "OPENWHISK_JAR=build/libs/openwhisk-standalone-${version}.jar"] |
| apply from: '../../gradle/docker.gradle' |
| distDocker.dependsOn 'bootJar' |
| |
| project.archivesBaseName = "openwhisk-standalone" |
| |
| task copySwagger(type: Copy) { |
| def version = "3.6.0" |
| mkdir("$buildDir/tmp/swagger") |
| def destFile = file("$buildDir/tmp/swagger/swagger-ui.tar") |
| def uiDir = file("$buildDir/tmp/swagger/swagger-ui") |
| if (!destFile.exists()) { |
| ant.get(src: "https://github.com/swagger-api/swagger-ui/archive/v${version}.tar.gz", dest: destFile) |
| } |
| from(tarTree(resources.gzip(destFile))){ |
| include("swagger-ui-${version}/dist/**") |
| } |
| into(uiDir) |
| includeEmptyDirs = false |
| project.ext.swaggerUiDir = file("$buildDir/tmp/swagger/swagger-ui/swagger-ui-${version}/dist") |
| } |
| |
| def apiGwActions = ['createApi', "deleteApi", "getApi"] |
| |
| task copyGWActions() { |
| doLast { |
| def routeMgmtDir = new File(project.projectDir, "../routemgmt") |
| def commonDir = new File(routeMgmtDir, "common") |
| def routeBuildDir = mkdir("$buildDir/tmp/routemgmt") |
| apiGwActions.each { actionName -> |
| def zipFileName = actionName + ".zip" |
| def actionDir = new File(routeMgmtDir, actionName) |
| def zipFile = new File(routeBuildDir, zipFileName) |
| def npmCommand = (Os.isFamily(Os.FAMILY_WINDOWS)) ? "npm.cmd" : "npm" |
| if (!zipFile.exists()) { |
| ant.exec(dir:actionDir, executable:npmCommand, failonerror:true){ |
| arg(line:"install") |
| } |
| ant.zip(destfile:zipFile){ |
| fileset(dir:actionDir){ |
| exclude(name:zipFileName) |
| //Somehow if in zip we add same file twice it causes issues |
| //Its possible that installRouteMgmt.sh has been invoked which would |
| //have copied the common files to each action dir. |
| //Exclude such files to zipped twice |
| commonDir.listFiles().each {f -> |
| exclude(name:f.name) |
| } |
| } |
| fileset(dir:commonDir) |
| } |
| logger.info("Create action zip $zipFileName") |
| } |
| } |
| } |
| } |
| |
| task copyGrafanaConfig() { |
| doLast { |
| def grafanaDir = new File(project(':core:monitoring:user-events').projectDir, "compose/grafana") |
| def grafanaBuildDir = mkdir("$buildDir/tmp/grafana") |
| def zipFileName = "grafana-config.zip" |
| def zipFile = new File(grafanaBuildDir, zipFileName) |
| if (!zipFile.exists()) { |
| ant.zip(destfile:zipFile){ |
| fileset(dir:grafanaDir) |
| } |
| logger.info("Created grafana config zip $zipFileName") |
| } |
| } |
| } |
| |
| processResources.dependsOn copySwagger |
| processResources.dependsOn copyGWActions |
| processResources.dependsOn copyGrafanaConfig |
| |
| processResources { |
| from(new File(project.projectDir, "../../ansible/files/runtimes.json")) { |
| into(".") |
| } |
| from(new File(project.projectDir, "../../ansible/files")) { |
| include "*.json" |
| into("couch") |
| } |
| from(file("$buildDir/tmp/grafana/grafana-config.zip")){ |
| into(".") |
| } |
| from(new File(project(':core:monitoring:user-events').projectDir, "compose/prometheus/prometheus.yml")){ |
| into(".") |
| } |
| //Implement the logic present in controller Docker file |
| from(project.swaggerUiDir) { |
| include "index.html" |
| filter { |
| it.replace("http://petstore.swagger.io/v2/swagger.json", "/api/v1/api-docs") |
| } |
| into("swagger-ui") |
| } |
| from(project.swaggerUiDir) { |
| exclude "index.html" |
| into("swagger-ui") |
| } |
| apiGwActions.each { action -> |
| from(file("$buildDir/tmp/routemgmt/${action}.zip")){ |
| into(".") |
| } |
| } |
| } |
| |
| task copyBootJarToBin(type:Copy){ |
| from ("${buildDir}/libs") |
| into file("${project.rootProject.projectDir}/bin") |
| rename("${project.archivesBaseName}-${version}.jar", "${project.archivesBaseName}.jar") |
| } |
| |
| bootJar { |
| mainClassName = 'org.apache.openwhisk.standalone.StandaloneOpenWhisk' |
| finalizedBy copyBootJarToBin |
| } |
| |
| // Support building standalone from source release (no .git) |
| gitProperties { |
| failOnNoGitDirectory = false |
| } |
| |
| // Gradle boot disables the default jar task. So need to now make |
| // install task depend on bootJar such that it finds the required jar file |
| // https://github.com/spring-projects/spring-boot/issues/13187 |
| install.dependsOn(bootJar) |
| |
| dependencies { |
| compile "org.scala-lang:scala-library:${gradle.scala.version}" |
| compile project(':core:controller') |
| compile project(':tools:admin') |
| compile "org.rogach:scallop_${gradle.scala.depVersion}:3.3.2" |
| |
| compile "io.github.embeddedkafka:embedded-kafka_${gradle.scala.depVersion}:2.4.0" |
| compile "org.scala-lang:scala-reflect:${gradle.scala.version}" |
| compile "ch.megard:akka-http-cors_${gradle.scala.depVersion}:0.4.2" |
| |
| testCompile "junit:junit:4.11" |
| testCompile "org.scalatest:scalatest_${gradle.scala.depVersion}:3.0.8" |
| } |
| |
| gradle.projectsEvaluated { |
| tasks.withType(Test) { |
| testLogging { |
| events "passed", "skipped", "failed" |
| showStandardStreams = true |
| exceptionFormat = 'full' |
| } |
| } |
| } |