From ec11eae699aed1c4692693645467a0366de95231 Mon Sep 17 00:00:00 2001 From: mmuller Date: Thu, 29 Nov 2018 10:14:28 -0800 Subject: [PATCH] Add App Engine Deploy to Gradle build Add a first pass add Nomulus GAE deployment to our gradle build scripts. This attempt could stand some improvement. In particular: - It currently only deploys to crash, per discussion we will make the environment a parameter. - This uses a different import mechanism from the other plugins (via a "buildscript" section) and it looks like the lint plugin is very similar. I'll experiment with getting it to work that way. - There is a lot of redundancy in the deployment scripts for each module, and given that we have the full power of a general programming language it should be possible for us to reuse the common parts. But that said, this is a pretty good first step and I wanted to put it out there. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=223366370 --- gradle/backend/build.gradle | 28 ++++++++++++++++++++++++++++ gradle/build.gradle | 14 ++++++++++++++ gradle/default/build.gradle | 29 +++++++++++++++++++++++++++++ gradle/pubapi/build.gradle | 29 +++++++++++++++++++++++++++++ gradle/settings.gradle | 4 ++++ gradle/tools/build.gradle | 28 ++++++++++++++++++++++++++++ 6 files changed, 132 insertions(+) create mode 100644 gradle/backend/build.gradle create mode 100644 gradle/default/build.gradle create mode 100644 gradle/pubapi/build.gradle create mode 100644 gradle/tools/build.gradle diff --git a/gradle/backend/build.gradle b/gradle/backend/build.gradle new file mode 100644 index 000000000..56428a267 --- /dev/null +++ b/gradle/backend/build.gradle @@ -0,0 +1,28 @@ +plugins { + id 'war' +} + +// 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 = + '../../java/google/registry/env/crash/backend' + +apply plugin: 'com.google.cloud.tools.appengine' + +// Get the web.xml file for the service. +war { + webInf { + from '../../java/google/registry/env/common/backend/WEB-INF' + } +} + +appengine { + deploy { + project = 'domain-registry-crash' + } +} + +dependencies { + compile project(':core') +} diff --git a/gradle/build.gradle b/gradle/build.gradle index 9627978d6..206af2dcf 100644 --- a/gradle/build.gradle +++ b/gradle/build.gradle @@ -1,3 +1,14 @@ +buildscript { + repositories { + jcenter() + mavenCentral() + } + + dependencies { + classpath 'com.google.cloud.tools:appengine-gradle-plugin:1.3.3' + } +} + plugins { id 'nebula.lint' version '10.3.1' // Config helper for annotation processors such as AutoValue and Dagger. @@ -19,6 +30,9 @@ subprojects { mavenCentral() } + // Exclude all of the module deployment projects. + if (project.name in ['default', 'backend', 'tools', 'pubapi']) return + apply plugin: 'java' apply plugin: 'nebula.lint' apply plugin: 'net.ltgt.apt' diff --git a/gradle/default/build.gradle b/gradle/default/build.gradle new file mode 100644 index 000000000..02db5a69a --- /dev/null +++ b/gradle/default/build.gradle @@ -0,0 +1,29 @@ +plugins { + id 'war' +} + +// 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 = + '../../java/google/registry/env/crash/default' + +apply plugin: 'com.google.cloud.tools.appengine' + +// Get the web.xml and cron.xml files for the service. +war { + webInf { + from '../../java/google/registry/env/common/default/WEB-INF' + from '../../java/google/registry/env/crash/tools/WEB-INF/cron.xml' + } +} + +appengine { + deploy { + project = 'domain-registry-crash' + } +} + +dependencies { + compile project(':core') +} diff --git a/gradle/pubapi/build.gradle b/gradle/pubapi/build.gradle new file mode 100644 index 000000000..27fbb9b97 --- /dev/null +++ b/gradle/pubapi/build.gradle @@ -0,0 +1,29 @@ +plugins { + id 'war' +} + +// 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 = + '../../java/google/registry/env/crash/pubapi' + +apply plugin: 'com.google.cloud.tools.appengine' + +// Get the web.xml file for the service. +war { + webInf { + from '../../java/google/registry/env/common/pubapi/WEB-INF' + from '../../java/google/registry/env/crash/pubapi/WEB-INF/cron.xml' + } +} + +appengine { + deploy { + project = 'domain-registry-crash' + } +} + +dependencies { + compile project(':core') +} diff --git a/gradle/settings.gradle b/gradle/settings.gradle index a5d469cb3..1806b5156 100644 --- a/gradle/settings.gradle +++ b/gradle/settings.gradle @@ -4,3 +4,7 @@ include 'core' include 'proxy' include 'third_party' include 'util' +include 'default' +include 'backend' +include 'tools' +include 'pubapi' diff --git a/gradle/tools/build.gradle b/gradle/tools/build.gradle new file mode 100644 index 000000000..ddf0e2beb --- /dev/null +++ b/gradle/tools/build.gradle @@ -0,0 +1,28 @@ +plugins { + id 'war' +} + +// 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 = + '../../java/google/registry/env/crash/tools' + +apply plugin: 'com.google.cloud.tools.appengine' + +// Get the web.xml file for the service. +war { + webInf { + from '../../java/google/registry/env/common/tools/WEB-INF' + } +} + +appengine { + deploy { + project = 'domain-registry-crash' + } +} + +dependencies { + compile project(':core') +}