mirror of
https://github.com/google/nomulus.git
synced 2025-04-29 19:47:51 +02:00
* Remove separate deployment of persistence.xml We added a step to explicitly copy persistence.xml because for some reason it wasn't originally getting deployed to app-engine, resulting in failures on startup. However, this file is now included in core.jar and we are now getting a warning about multiple persistence units with the same name as it reads the files from both the filesystem and core.jar.
110 lines
4.1 KiB
Groovy
110 lines
4.1 KiB
Groovy
// Copyright 2019 The Nomulus Authors. All Rights Reserved.
|
|
//
|
|
// Licensed 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: 'war'
|
|
|
|
def environment = rootProject.environment
|
|
def gcpProject = rootProject.gcpProject
|
|
|
|
// Set this directory before applying the appengine plugin so that the
|
|
// plugin will recognize this as an app-engine standard app (and also
|
|
// obtains the appengine-web.xml from the correct location)
|
|
project.convention.plugins['war'].webAppDirName =
|
|
"../../core/src/main/java/google/registry/env/${environment}/${project.name}"
|
|
|
|
apply plugin: 'com.google.cloud.tools.appengine'
|
|
|
|
def coreResourcesDir = "${rootDir}/core/build/resources/main"
|
|
|
|
// Get the web.xml file for the service.
|
|
war {
|
|
webInf {
|
|
from "../../core/src/main/java/google/registry/env/common/${project.name}/WEB-INF"
|
|
}
|
|
}
|
|
|
|
war {
|
|
from("${coreResourcesDir}/google/registry/ui/html") {
|
|
include "*.html"
|
|
}
|
|
}
|
|
|
|
if (project.path == ":services:default") {
|
|
war {
|
|
from("${coreResourcesDir}/google/registry/ui") {
|
|
include "registrar_bin.js"
|
|
if (environment != "production") {
|
|
include "registrar_bin.js.map"
|
|
}
|
|
into("assets/js")
|
|
}
|
|
from("${coreResourcesDir}/google/registry/ui/css") {
|
|
include "registrar*"
|
|
into("assets/css")
|
|
}
|
|
from("${coreResourcesDir}/google/registry/ui/assets/images") {
|
|
include "**/*"
|
|
into("assets/images")
|
|
}
|
|
}
|
|
}
|
|
|
|
appengine {
|
|
deploy {
|
|
// appengineDeployAll task requires the version to be set. So,
|
|
// this config lets gcloud select a version name when deploying
|
|
// to alpha or sandbox from our workstation.
|
|
if (!rootProject.prodOrSandboxEnv) {
|
|
version = 'GCLOUD_CONFIG'
|
|
}
|
|
|
|
// Don't set gcpProject directly, it gets overriden in ./build.gradle.
|
|
// Do -P environment={crash,alpha} instead. For sandbox/production,
|
|
// use Spinnaker.
|
|
projectId = gcpProject
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
compile project(path: ':core', configuration: 'deploy_jar')
|
|
}
|
|
|
|
// The tools.jar file gets pulled in from the java environment and for some
|
|
// reason gets exploded "readonly", causing subsequent builds to fail when
|
|
// they can't overwrite it. The hack below makes the file writable after
|
|
// we're done exploding it.
|
|
//
|
|
// Fun fact: We only use this jar for documentation generation and as such we
|
|
// don't need it in our warfile, as it is not used by the application at
|
|
// runtime. But it's not clear how to exclude it, as we seem to be
|
|
// constructing the jar from the entire WEB-INF directory and per-file
|
|
// exclude rules don't seem to work on it. Better solutions are welcome :-)
|
|
explodeWar.doLast {
|
|
file("${it.explodedAppDirectory}/WEB-INF/lib/tools.jar").setWritable(true)
|
|
}
|
|
|
|
rootProject.deploy.dependsOn appengineDeployAll
|
|
rootProject.stage.dependsOn appengineStage
|
|
|
|
// Impose verification for all of the deployment tasks. We haven't found a
|
|
// better way to do this other than to apply to each of them independently.
|
|
// If a new task gets added, it will still fail if "environment" is not defined
|
|
// because gcpProject is null. We just won't get as friendly an error message.
|
|
appengineDeployAll.configure rootProject.verifyDeploymentConfig
|
|
appengineDeploy.configure rootProject.verifyDeploymentConfig
|
|
appengineDeployCron.configure rootProject.verifyDeploymentConfig
|
|
appengineDeployDispatch.configure rootProject.verifyDeploymentConfig
|
|
appengineDeployDos.configure rootProject.verifyDeploymentConfig
|
|
appengineDeployIndex.configure rootProject.verifyDeploymentConfig
|
|
appengineDeployQueue.configure rootProject.verifyDeploymentConfig
|