diff --git a/java/google/registry/BUILD b/java/google/registry/BUILD
index 1a5ed762e..cd2f11ae1 100644
--- a/java/google/registry/BUILD
+++ b/java/google/registry/BUILD
@@ -2,6 +2,8 @@ package(default_visibility = ["//java/google/registry:registry_project"])
licenses(["notice"]) # Apache 2.0
+load("//java/google/registry/builddefs:zip_file.bzl", "zip_file")
+load("//java/google/registry/builddefs:registry_ear_file.bzl", "registry_ear_file")
package_group(
name = "registry_project",
@@ -12,3 +14,278 @@ package_group(
],
)
+
+
+
+zip_file(
+ name = "common_war",
+ srcs = ["//third_party/java/appengine:appengine-api"],
+ out = "mandatory_stuff.war",
+ mappings = {"third_party/java/appengine": "WEB-INF/lib"},
+ visibility = ["//visibility:private"],
+)
+
+################################################################################
+# DOMAIN REGISTRY :: PRODUCTION ENVIRONMENT
+
+registry_ear_file(
+ name = "registry_ear",
+ out = "registry.ear",
+ configs = {
+ "env/common/META-INF/appengine-application.xml": "META-INF/appengine-application.xml",
+ "env/common/META-INF/application.xml": "META-INF/application.xml",
+ },
+ wars = {
+ "registry_default.war": "default",
+ "registry_backend.war": "backend",
+ "registry_tools.war": "tools",
+ },
+)
+
+zip_file(
+ name = "registry_default_war",
+ srcs = [
+ "env/common/default/WEB-INF/datastore-indexes.xml",
+ "env/common/default/WEB-INF/dos.xml",
+ "env/common/default/WEB-INF/logging.properties",
+ "env/common/default/WEB-INF/queue.xml",
+ "env/common/default/WEB-INF/web.xml",
+ "env/production/default/WEB-INF/appengine-web.xml",
+ "env/production/default/WEB-INF/cron.xml",
+ "//java/google/registry/module/frontend:frontend_jar_deploy.jar",
+ ],
+ out = "registry_default.war",
+ mappings = {
+ "java/google/registry/env/common/default": "",
+ "java/google/registry/env/production/default": "",
+ "java/google/registry/module/frontend": "WEB-INF/lib",
+ },
+ deps = [
+ ":common_war",
+ "//java/google/registry/ui:war_debug",
+ ],
+)
+
+zip_file(
+ name = "registry_backend_war",
+ srcs = [
+ "env/common/backend/WEB-INF/logging.properties",
+ "env/common/backend/WEB-INF/web.xml",
+ "env/production/backend/WEB-INF/appengine-web.xml",
+ "//java/google/registry/module/backend:backend_jar_deploy.jar",
+ ],
+ out = "registry_backend.war",
+ mappings = {
+ "java/google/registry/env/common/backend": "",
+ "java/google/registry/env/production/backend": "",
+ "java/google/registry/module/backend": "WEB-INF/lib",
+ },
+ deps = [
+ ":common_war",
+ "//java/google/registry/ui:war",
+ ],
+)
+
+zip_file(
+ name = "registry_tools_war",
+ srcs = [
+ "env/common/tools/WEB-INF/logging.properties",
+ "env/common/tools/WEB-INF/web.xml",
+ "env/production/tools/WEB-INF/appengine-web.xml",
+ "//java/google/registry/module/tools:tools_jar_deploy.jar",
+ ],
+ out = "registry_tools.war",
+ mappings = {
+ "java/google/registry/env/common/tools": "",
+ "java/google/registry/env/production/tools": "",
+ "java/google/registry/module/tools": "WEB-INF/lib",
+ },
+ deps = [
+ ":common_war",
+ "//java/google/registry/ui:war",
+ ],
+)
+
+
+################################################################################
+# DOMAIN REGISTRY :: SANDBOX ENVIRONMENT
+#
+# Sandbox is a production environment that registrar customers use to conduct
+# integration tests against the registry service.
+
+registry_ear_file(
+ name = "registry_sandbox_ear",
+ out = "registry_sandbox.ear",
+ configs = {
+ "env/common/META-INF/appengine-application.xml": "META-INF/appengine-application.xml",
+ "env/common/META-INF/application.xml": "META-INF/application.xml",
+ },
+ wars = {
+ "registry_default_sandbox.war": "default",
+ "registry_backend_sandbox.war": "backend",
+ "registry_tools_sandbox.war": "tools",
+ },
+)
+
+zip_file(
+ name = "registry_default_sandbox_war",
+ srcs = [
+ "env/sandbox/default/WEB-INF/appengine-web.xml",
+ "env/sandbox/default/WEB-INF/cron.xml",
+ ],
+ out = "registry_default_sandbox.war",
+ mappings = {"java/google/registry/env/sandbox/default": ""},
+ deps = [":registry_default_war"],
+)
+
+zip_file(
+ name = "registry_backend_sandbox_war",
+ srcs = ["env/sandbox/backend/WEB-INF/appengine-web.xml"],
+ out = "registry_backend_sandbox.war",
+ mappings = {"java/google/registry/env/sandbox/backend": ""},
+ deps = [":registry_backend_war"],
+)
+
+zip_file(
+ name = "registry_tools_sandbox_war",
+ srcs = ["env/sandbox/tools/WEB-INF/appengine-web.xml"],
+ out = "registry_tools_sandbox.war",
+ mappings = {"java/google/registry/env/sandbox/tools": ""},
+ deps = [":registry_tools_war"],
+)
+
+################################################################################
+# DOMAIN REGISTRY :: ALPHA ENVIRONMENT
+#
+# The alpha environment is used by developers to test new features.
+
+registry_ear_file(
+ name = "registry_alpha_ear",
+ out = "registry_alpha.ear",
+ configs = {
+ "env/common/META-INF/appengine-application.xml": "META-INF/appengine-application.xml",
+ "env/common/META-INF/application.xml": "META-INF/application.xml",
+ },
+ wars = {
+ "registry_default_alpha.war": "default",
+ "registry_backend_alpha.war": "backend",
+ "registry_tools_alpha.war": "tools",
+ },
+)
+
+zip_file(
+ name = "registry_default_alpha_war",
+ srcs = [
+ "env/alpha/default/WEB-INF/appengine-web.xml",
+ "env/alpha/default/WEB-INF/cron.xml",
+ ],
+ out = "registry_default_alpha.war",
+ mappings = {"java/google/registry/env/alpha/default": ""},
+ deps = [":registry_default_war"],
+)
+
+zip_file(
+ name = "registry_backend_alpha_war",
+ srcs = ["env/alpha/backend/WEB-INF/appengine-web.xml"],
+ out = "registry_backend_alpha.war",
+ mappings = {"java/google/registry/env/alpha/backend": ""},
+ deps = [":registry_backend_war"],
+)
+
+zip_file(
+ name = "registry_tools_alpha_war",
+ srcs = ["env/alpha/tools/WEB-INF/appengine-web.xml"],
+ out = "registry_tools_alpha.war",
+ mappings = {"java/google/registry/env/alpha/tools": ""},
+ deps = [":registry_tools_war"],
+)
+
+################################################################################
+# DOMAIN REGISTRY :: CRASH ENVIRONMENT
+#
+# The crash environment is used for testing loads, backups, and restores.
+
+registry_ear_file(
+ name = "registry_crash_ear",
+ out = "registry_crash.ear",
+ configs = {
+ "env/common/META-INF/appengine-application.xml": "META-INF/appengine-application.xml",
+ "env/common/META-INF/application.xml": "META-INF/application.xml",
+ },
+ wars = {
+ "registry_default_crash.war": "default",
+ "registry_backend_crash.war": "backend",
+ "registry_tools_crash.war": "tools",
+ },
+)
+
+zip_file(
+ name = "registry_default_crash_war",
+ srcs = [
+ "env/crash/default/WEB-INF/appengine-web.xml",
+ "env/crash/default/WEB-INF/cron.xml",
+ ],
+ out = "registry_default_crash.war",
+ mappings = {"java/google/registry/env/crash/default": ""},
+ deps = [":registry_default_war"],
+)
+
+zip_file(
+ name = "registry_backend_crash_war",
+ srcs = ["env/crash/backend/WEB-INF/appengine-web.xml"],
+ out = "registry_backend_crash.war",
+ mappings = {"java/google/registry/env/crash/backend": ""},
+ deps = [":registry_backend_war"],
+)
+
+zip_file(
+ name = "registry_tools_crash_war",
+ srcs = ["env/crash/tools/WEB-INF/appengine-web.xml"],
+ out = "registry_tools_crash.war",
+ mappings = {"java/google/registry/env/crash/tools": ""},
+ deps = [":registry_tools_war"],
+)
+
+################################################################################
+# DOMAIN REGISTRY :: LOCAL ENVIRONMENT
+#
+# The local environment only runs locally for testing and is never deployed.
+
+registry_ear_file(
+ name = "registry_local_ear",
+ out = "registry_local.ear",
+ configs = {
+ "env/common/META-INF/appengine-application.xml": "META-INF/appengine-application.xml",
+ "env/common/META-INF/application.xml": "META-INF/application.xml",
+ },
+ wars = {
+ "registry_default_local.war": "default",
+ "registry_backend_local.war": "backend",
+ "registry_tools_local.war": "tools",
+ },
+)
+
+zip_file(
+ name = "registry_default_local_war",
+ srcs = ["env/local/default/WEB-INF/appengine-web.xml"],
+ out = "registry_default_local.war",
+ mappings = {"java/google/registry/env/local/default": ""},
+ deps = [":registry_default_war"],
+)
+
+zip_file(
+ name = "registry_backend_local_war",
+ srcs = ["env/local/backend/WEB-INF/appengine-web.xml"],
+ out = "registry_backend_local.war",
+ mappings = {"java/google/registry/env/local/backend": ""},
+ deps = [":registry_backend_war"],
+)
+
+zip_file(
+ name = "registry_tools_local_war",
+ srcs = ["env/local/tools/WEB-INF/appengine-web.xml"],
+ out = "registry_tools_local.war",
+ mappings = {"java/google/registry/env/local/tools": ""},
+ deps = [":registry_tools_war"],
+)
+
diff --git a/java/google/registry/builddefs/registry_ear_file.bzl b/java/google/registry/builddefs/registry_ear_file.bzl
new file mode 100644
index 000000000..9d26bfe92
--- /dev/null
+++ b/java/google/registry/builddefs/registry_ear_file.bzl
@@ -0,0 +1,54 @@
+# Copyright 2016 The Domain Registry 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.
+
+"""Build macro for creating App Engine EAR archives for Domain Registry."""
+
+load("//java/google/registry/builddefs:defs.bzl", "ZIPPER")
+
+def registry_ear_file(name, out, configs, wars, **kwargs):
+ """Creates an EAR archive by combining WAR archives."""
+ cmd = [
+ "set -e",
+ "repo=$$(pwd)",
+ "zipper=$$repo/$(location %s)" % ZIPPER,
+ "tmp=$$(mktemp -d $${TMPDIR:-/tmp}/registry_ear_file.XXXXXXXXXX)",
+ "cd $${tmp}",
+ ]
+ for target, dest in configs.items():
+ cmd += [
+ "mkdir -p $${tmp}/$$(dirname %s)" % dest,
+ "ln -s $${repo}/$(location %s) $${tmp}/%s" % (target, dest),
+ ]
+ for target, dest in wars.items():
+ cmd += [
+ "mkdir " + dest,
+ "cd " + dest,
+ "$${zipper} x $${repo}/$(location %s)" % target,
+ "cd ..",
+ ]
+ cmd += [
+ ("find . | sed 1d | cut -c 3- | LC_ALL=C sort" +
+ " | xargs $${zipper} cC $${repo}/$@"),
+ "cd $${repo}",
+ "rm -rf $${tmp}",
+ ]
+ native.genrule(
+ name = name,
+ srcs = configs.keys() + wars.keys(),
+ outs = [out],
+ cmd = "\n".join(cmd),
+ tools = [ZIPPER],
+ message = "Generating EAR archive",
+ **kwargs
+ )
diff --git a/java/google/registry/env/BUILD b/java/google/registry/env/BUILD
deleted file mode 100644
index 17ccbda7c..000000000
--- a/java/google/registry/env/BUILD
+++ /dev/null
@@ -1,6 +0,0 @@
-package(
- default_visibility = ["//java/google/registry:registry_project"],
-)
-
-licenses(["notice"]) # Apache 2.0
-
diff --git a/java/google/registry/env/alpha/backend/WEB-INF/appengine-web.xml b/java/google/registry/env/alpha/backend/WEB-INF/appengine-web.xml
new file mode 100644
index 000000000..774b7de5a
--- /dev/null
+++ b/java/google/registry/env/alpha/backend/WEB-INF/appengine-web.xml
@@ -0,0 +1,28 @@
+
+
+
+ domain-registry
+ 1
+ backend
+ true
+ true
+ B4
+
+ 10
+ 10m
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/google/registry/env/alpha/default/WEB-INF/appengine-web.xml b/java/google/registry/env/alpha/default/WEB-INF/appengine-web.xml
new file mode 100644
index 000000000..625375fa2
--- /dev/null
+++ b/java/google/registry/env/alpha/default/WEB-INF/appengine-web.xml
@@ -0,0 +1,32 @@
+
+
+
+ domain-registry
+ 1
+ default
+ true
+ true
+ F4_1G
+
+ 0
+ automatic
+ automatic
+ 100ms
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/google/registry/env/alpha/default/WEB-INF/cron.xml b/java/google/registry/env/alpha/default/WEB-INF/cron.xml
new file mode 100644
index 000000000..fe273077f
--- /dev/null
+++ b/java/google/registry/env/alpha/default/WEB-INF/cron.xml
@@ -0,0 +1,148 @@
+
+
+
+
+ /_dr/task/rdeStaging
+
+ This job generates a full RDE escrow deposit as a single gigantic XML document
+ and streams it to cloud storage. When this job has finished successfully, it'll
+ launch a separate task that uploads the deposit file to Iron Mountain via SFTP.
+
+
+ every 4 hours from 00:07 to 20:00
+ backend
+
+
+
+
+
+ This job is a no-op unless RdeUploadCursor falls behind for some reason.
+
+ every 4 hours synchronized
+ backend
+
+
+
+
+
+ This job is a no-op unless RdeReportCursor falls behind for some reason.
+
+ every 4 hours synchronized
+ backend
+
+
+
+
+
+ This job downloads the latest DNL from MarksDB and inserts it into the database.
+ (See: TmchDnlServlet, ClaimsList)
+
+ every 12 hours synchronized
+ backend
+
+
+
+
+
+ This job downloads the latest SMDRL from MarksDB and inserts it into the database.
+ (See: TmchSmdrlServlet, SignedMarkRevocationList)
+
+ every 12 hours synchronized
+ backend
+
+
+
+
+
+ This job downloads the latest CRL from MarksDB and inserts it into the database.
+ (See: TmchCrlServlet)
+
+ every 12 hours synchronized
+ backend
+
+
+
+
+
+ Synchronize Registrar entities to Google Spreadsheets.
+
+ every 1 hours synchronized
+ backend
+
+
+
+
+
+
+
+
+ Reserved terms export to Google Drive job for creating once-daily exports.
+
+ every day 05:30
+ backend
+
+
+
+
+
+ Syncs RegistrarContact changes in the past hour to Google Groups.
+
+ every 1 hours synchronized
+ backend
+
+
+
+
+
+ This job checkpoints the commit log buckets and exports the diff since last checkpoint to GCS.
+
+ every 1 minutes synchronized
+ backend
+
+
+
+
+
+ This job fires off a datastore backup-as-a-service job that generates snapshot files in GCS.
+ It also enqueues a new task to wait on the completion of that job and then load the resulting
+ snapshot into bigquery.
+
+
+ every day 06:00
+ backend
+
+
+
+
+
+ Lease all tasks from the dns-pull queue, group by TLD, and invoke PublishDnsUpdates for each
+ group.
+
+ every 1 minutes synchronized
+ backend
+
+
+
+
diff --git a/java/google/registry/env/alpha/tools/WEB-INF/appengine-web.xml b/java/google/registry/env/alpha/tools/WEB-INF/appengine-web.xml
new file mode 100644
index 000000000..0a82b840c
--- /dev/null
+++ b/java/google/registry/env/alpha/tools/WEB-INF/appengine-web.xml
@@ -0,0 +1,28 @@
+
+
+
+ domain-registry
+ 1
+ tools
+ true
+ true
+ B4_1G
+
+ 100
+ 5m
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/google/registry/env/common/BUILD b/java/google/registry/env/common/BUILD
deleted file mode 100644
index 737f8ac34..000000000
--- a/java/google/registry/env/common/BUILD
+++ /dev/null
@@ -1,7 +0,0 @@
-package(
- default_visibility = ["//java/google/registry:registry_project"],
-)
-
-licenses(["notice"]) # Apache 2.0
-
-
diff --git a/java/google/registry/env/common/backend/BUILD b/java/google/registry/env/common/backend/BUILD
deleted file mode 100644
index 80135411c..000000000
--- a/java/google/registry/env/common/backend/BUILD
+++ /dev/null
@@ -1,9 +0,0 @@
-package(
- default_visibility = ["//java/google/registry:registry_project"],
-)
-
-licenses(["notice"]) # Apache 2.0
-
-exports_files(glob(["WEB-INF/*"]))
-
-
diff --git a/java/google/registry/env/common/default/BUILD b/java/google/registry/env/common/default/BUILD
deleted file mode 100644
index 80135411c..000000000
--- a/java/google/registry/env/common/default/BUILD
+++ /dev/null
@@ -1,9 +0,0 @@
-package(
- default_visibility = ["//java/google/registry:registry_project"],
-)
-
-licenses(["notice"]) # Apache 2.0
-
-exports_files(glob(["WEB-INF/*"]))
-
-
diff --git a/java/google/registry/env/common/tools/BUILD b/java/google/registry/env/common/tools/BUILD
deleted file mode 100644
index 80135411c..000000000
--- a/java/google/registry/env/common/tools/BUILD
+++ /dev/null
@@ -1,9 +0,0 @@
-package(
- default_visibility = ["//java/google/registry:registry_project"],
-)
-
-licenses(["notice"]) # Apache 2.0
-
-exports_files(glob(["WEB-INF/*"]))
-
-
diff --git a/java/google/registry/env/crash/backend/WEB-INF/appengine-web.xml b/java/google/registry/env/crash/backend/WEB-INF/appengine-web.xml
new file mode 100644
index 000000000..9b9cc5403
--- /dev/null
+++ b/java/google/registry/env/crash/backend/WEB-INF/appengine-web.xml
@@ -0,0 +1,28 @@
+
+
+
+ domain-registry
+ 1
+ backend
+ true
+ true
+ B4
+
+ 10
+ 10m
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/google/registry/env/crash/default/WEB-INF/appengine-web.xml b/java/google/registry/env/crash/default/WEB-INF/appengine-web.xml
new file mode 100644
index 000000000..4dd7927b1
--- /dev/null
+++ b/java/google/registry/env/crash/default/WEB-INF/appengine-web.xml
@@ -0,0 +1,32 @@
+
+
+
+ domain-registry
+ 1
+ default
+ true
+ true
+ F4_1G
+
+ 0
+ automatic
+ automatic
+ 100ms
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/google/registry/env/crash/default/WEB-INF/cron.xml b/java/google/registry/env/crash/default/WEB-INF/cron.xml
new file mode 100644
index 000000000..dc41d9d5a
--- /dev/null
+++ b/java/google/registry/env/crash/default/WEB-INF/cron.xml
@@ -0,0 +1,128 @@
+
+
+
+
+ /_dr/task/rdeStaging
+
+ This job generates a full RDE escrow deposit as a single gigantic XML document
+ and streams it to cloud storage. When this job has finished successfully, it'll
+ launch a separate task that uploads the deposit file to Iron Mountain via SFTP.
+
+
+ every 4 hours from 00:07 to 20:00
+ backend
+
+
+
+
+
+ This job is a no-op unless RdeUploadCursor falls behind for some reason.
+
+ every 4 hours synchronized
+ backend
+
+
+
+
+
+ This job is a no-op unless RdeReportCursor falls behind for some reason.
+
+ every 4 hours synchronized
+ backend
+
+
+
+
+
+ This job downloads the latest DNL from MarksDB and inserts it into the database.
+ (See: TmchDnlServlet, ClaimsList)
+
+ every 12 hours synchronized
+ backend
+
+
+
+
+
+ This job downloads the latest SMDRL from MarksDB and inserts it into the database.
+ (See: TmchSmdrlServlet, SignedMarkRevocationList)
+
+ every 12 hours synchronized
+ backend
+
+
+
+
+
+ This job downloads the latest CRL from MarksDB and inserts it into the database.
+ (See: TmchCrlServlet)
+
+ every 12 hours synchronized
+ backend
+
+
+
+
+
+ Synchronize Registrar entities to Google Spreadsheets.
+
+ every 1 hours synchronized
+ backend
+
+
+
+
+
+
+ Reserved terms export to Google Drive job for creating once-daily exports.
+
+ every day 05:30
+ backend
+
+
+
+
+
+ Syncs RegistrarContact changes in the past hour to Google Groups.
+
+ every 1 hours synchronized
+ backend
+
+
+
+
+
+ This job fires off a datastore backup-as-a-service job that generates snapshot files in GCS.
+ It also enqueues a new task to wait on the completion of that job and then load the resulting
+ snapshot into bigquery.
+
+
+ every day 06:00
+ backend
+
+
+
+
+
+ Lease all tasks from the dns-pull queue, group by TLD, and invoke PublishDnsUpdates for each
+ group.
+
+ every 1 minutes synchronized
+ backend
+
+
+
+
diff --git a/java/google/registry/env/crash/tools/WEB-INF/appengine-web.xml b/java/google/registry/env/crash/tools/WEB-INF/appengine-web.xml
new file mode 100644
index 000000000..72aac3b85
--- /dev/null
+++ b/java/google/registry/env/crash/tools/WEB-INF/appengine-web.xml
@@ -0,0 +1,28 @@
+
+
+
+ domain-registry
+ 1
+ tools
+ true
+ true
+ B4
+
+ 10
+ 10m
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/google/registry/env/local/backend/WEB-INF/appengine-web.xml b/java/google/registry/env/local/backend/WEB-INF/appengine-web.xml
new file mode 100644
index 000000000..afe90f338
--- /dev/null
+++ b/java/google/registry/env/local/backend/WEB-INF/appengine-web.xml
@@ -0,0 +1,38 @@
+
+
+
+ domain-registry
+ 1
+ backend
+ true
+ true
+ B4
+
+ 10
+ 10m
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/google/registry/env/local/default/WEB-INF/appengine-web.xml b/java/google/registry/env/local/default/WEB-INF/appengine-web.xml
new file mode 100644
index 000000000..183b45cb4
--- /dev/null
+++ b/java/google/registry/env/local/default/WEB-INF/appengine-web.xml
@@ -0,0 +1,45 @@
+
+
+
+ domain-registry
+ 1
+ default
+ true
+ true
+ F4_1G
+
+ 1
+ automatic
+ automatic
+ 100ms
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/google/registry/env/local/tools/WEB-INF/appengine-web.xml b/java/google/registry/env/local/tools/WEB-INF/appengine-web.xml
new file mode 100644
index 000000000..5d1a17d65
--- /dev/null
+++ b/java/google/registry/env/local/tools/WEB-INF/appengine-web.xml
@@ -0,0 +1,38 @@
+
+
+
+ domain-registry
+ 1
+ tools
+ true
+ true
+ B4
+
+ 10
+ 10m
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/google/registry/env/production/BUILD b/java/google/registry/env/production/BUILD
deleted file mode 100644
index 17ccbda7c..000000000
--- a/java/google/registry/env/production/BUILD
+++ /dev/null
@@ -1,6 +0,0 @@
-package(
- default_visibility = ["//java/google/registry:registry_project"],
-)
-
-licenses(["notice"]) # Apache 2.0
-
diff --git a/java/google/registry/env/production/backend/BUILD b/java/google/registry/env/production/backend/BUILD
deleted file mode 100644
index 737f8ac34..000000000
--- a/java/google/registry/env/production/backend/BUILD
+++ /dev/null
@@ -1,7 +0,0 @@
-package(
- default_visibility = ["//java/google/registry:registry_project"],
-)
-
-licenses(["notice"]) # Apache 2.0
-
-
diff --git a/java/google/registry/env/production/default/BUILD b/java/google/registry/env/production/default/BUILD
deleted file mode 100644
index 737f8ac34..000000000
--- a/java/google/registry/env/production/default/BUILD
+++ /dev/null
@@ -1,7 +0,0 @@
-package(
- default_visibility = ["//java/google/registry:registry_project"],
-)
-
-licenses(["notice"]) # Apache 2.0
-
-
diff --git a/java/google/registry/env/production/tools/BUILD b/java/google/registry/env/production/tools/BUILD
deleted file mode 100644
index 737f8ac34..000000000
--- a/java/google/registry/env/production/tools/BUILD
+++ /dev/null
@@ -1,7 +0,0 @@
-package(
- default_visibility = ["//java/google/registry:registry_project"],
-)
-
-licenses(["notice"]) # Apache 2.0
-
-
diff --git a/java/google/registry/env/sandbox/backend/WEB-INF/appengine-web.xml b/java/google/registry/env/sandbox/backend/WEB-INF/appengine-web.xml
new file mode 100644
index 000000000..ece64f711
--- /dev/null
+++ b/java/google/registry/env/sandbox/backend/WEB-INF/appengine-web.xml
@@ -0,0 +1,33 @@
+
+
+
+ domain-registry
+ 1
+ backend
+ true
+ true
+ B4
+
+ 50
+ 10m
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/google/registry/env/sandbox/default/WEB-INF/appengine-web.xml b/java/google/registry/env/sandbox/default/WEB-INF/appengine-web.xml
new file mode 100644
index 000000000..c962d22d8
--- /dev/null
+++ b/java/google/registry/env/sandbox/default/WEB-INF/appengine-web.xml
@@ -0,0 +1,34 @@
+
+
+
+ domain-registry
+ 1
+ default
+ true
+ true
+ B4_1G
+
+ 20
+ 10m
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/google/registry/env/sandbox/default/WEB-INF/cron.xml b/java/google/registry/env/sandbox/default/WEB-INF/cron.xml
new file mode 100644
index 000000000..e14467149
--- /dev/null
+++ b/java/google/registry/env/sandbox/default/WEB-INF/cron.xml
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+ This job downloads the latest DNL from MarksDB and inserts it into the database.
+ (See: TmchDnlServlet, ClaimsList)
+
+ every 12 hours synchronized
+ backend
+
+
+
+
+
+ This job downloads the latest SMDRL from MarksDB and inserts it into the database.
+ (See: TmchSmdrlServlet, SignedMarkRevocationList)
+
+ every 12 hours synchronized
+ backend
+
+
+
+
+
+ This job downloads the latest CRL from MarksDB and inserts it into the database.
+ (See: TmchCrlServlet)
+
+ every 12 hours synchronized
+ backend
+
+
+
+
+
+ Syncs RegistrarContact changes in the past hour to Google Groups.
+
+ every 1 hours synchronized
+ backend
+
+
+
+
+
+ This job fires off a datastore backup-as-a-service job that generates snapshot files in GCS.
+ It also enqueues a new task to wait on the completion of that job and then load the resulting
+ snapshot into bigquery.
+
+
+ every day 06:00
+ backend
+
+
+
+
+
+ Reserved terms export to Google Drive job for creating once-daily exports.
+
+ every day 05:30
+ backend
+
+
+
+
+
+ This job exports lists of all active domain names to Google Cloud Storage.
+
+ every 12 hours synchronized
+ backend
+
+
+
+
+
+ Lease all tasks from the dns-pull queue, group by TLD, and invoke PublishDnsUpdates for each
+ group.
+
+ every 1 minutes synchronized
+ backend
+
+
+
+
+
+ This job clears out data from probers and runs once a week.
+
+ every monday 14:00
+ UTC
+
+ tools
+
+
+
+
+
+ This job verifies entity integrity and runs once daily.
+
+ every day 06:30
+ UTC
+ backend
+
+
+
+
+
+ Synchronize Registrar entities to Google Spreadsheets.
+
+ every 1 hours synchronized
+ backend
+
+
+
+
+
+
diff --git a/java/google/registry/env/sandbox/tools/WEB-INF/appengine-web.xml b/java/google/registry/env/sandbox/tools/WEB-INF/appengine-web.xml
new file mode 100644
index 000000000..9e8bcb777
--- /dev/null
+++ b/java/google/registry/env/sandbox/tools/WEB-INF/appengine-web.xml
@@ -0,0 +1,33 @@
+
+
+
+ domain-registry
+ 1
+ tools
+ true
+ true
+ B4
+
+ 50
+ 10m
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/google/registry/ui/BUILD b/java/google/registry/ui/BUILD
index 03af8eb17..e6f5aff80 100644
--- a/java/google/registry/ui/BUILD
+++ b/java/google/registry/ui/BUILD
@@ -3,36 +3,18 @@ package(default_visibility = ["//java/google/registry:registry_project"])
licenses(["notice"]) # Apache 2.0
load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_binary", "closure_js_deps")
+load("//java/google/registry/builddefs:zip_file.bzl", "zip_file")
exports_files(["globals.txt"])
-filegroup(
- name = "assets_recursive",
- srcs = glob(["assets/**"]),
-)
-
-filegroup(
- name = "js_files_recursive",
- srcs = [
- "//java/google/registry/ui/js:js_files",
- "//java/google/registry/ui/js/registrar:js_files",
- "//java/google/registry/ui/soy:js_files",
- "//java/google/registry/ui/soy/registrar:js_files",
- ],
-)
-
filegroup(
name = "runfiles",
- srcs = [
+ srcs = glob(["assets/**"]) + [
"brain_bin.js",
"brain_bin_map.js",
"registrar_bin.js",
"registrar_bin_map.js",
- ":assets_recursive",
- "//javascript/closure:js_files_recursive",
- "//javascript/template/soy:soy_usegoog_js_files",
- "//java/google/registry/ui:deps.js",
"//java/google/registry/ui/css:registrar_bin.css",
"//java/google/registry/ui/html:html_files",
],
@@ -45,14 +27,45 @@ filegroup(
"brain_bin.js.map",
"deps.js",
"registrar_bin.js.map",
- ":js_files_recursive",
- ":runfiles",
+ "registrar_dbg.js",
"//javascript/closure:js_files_recursive",
"//javascript/template/soy:soy_usegoog_js_files",
"//java/google/registry/ui/css:css_files",
+ "//java/google/registry/ui/css:registrar_dbg.css",
+ "//java/google/registry/ui/js:js_files",
+ "//java/google/registry/ui/js/registrar:js_files",
+ "//java/google/registry/ui/soy:js_files",
+ "//java/google/registry/ui/soy/registrar:js_files",
],
)
+zip_file(
+ name = "war",
+ srcs = [":runfiles"],
+ out = "ui.war",
+ mappings = {
+ "java/google/registry/ui/assets": "assets",
+ "java/google/registry/ui/css": "assets/css",
+ "java/google/registry/ui/html": "",
+ "java/google/registry/ui": "assets/js",
+ },
+)
+
+zip_file(
+ name = "war_debug",
+ srcs = [":runfiles_debug"],
+ out = "ui_debug.war",
+ mappings = {
+ "java/google/registry/ui/deps.js": "assets/sources/deps.js",
+ "java/google/registry/ui/brain_bin.js.map": "assets/js/brain_bin.js.map",
+ "java/google/registry/ui/registrar_bin.js.map": "assets/js/registrar_bin.js.map",
+ "java/google/registry/ui/registrar_dbg.js": "assets/js/registrar_dbg.js",
+ "java/google/registry/ui/css/registrar_dbg.css": "assets/css/registrar_dbg.css",
+ "": "assets/sources",
+ },
+ deps = [":war"],
+)
+
java_library(
name = "ui",
srcs = glob(["*.java"]),
diff --git a/javatests/google/registry/server/BUILD b/javatests/google/registry/server/BUILD
index 0e391cba3..8f96b546b 100644
--- a/javatests/google/registry/server/BUILD
+++ b/javatests/google/registry/server/BUILD
@@ -47,7 +47,10 @@ java_library(
java_library(
name = "RegistryTestServer",
srcs = ["RegistryTestServer.java"],
- data = ["//java/google/registry/ui:runfiles_debug"],
+ data = [
+ "//java/google/registry/ui:runfiles",
+ "//java/google/registry/ui:runfiles_debug",
+ ],
deps = [
":TestServer",
"//java/com/google/common/collect",
diff --git a/javatests/google/registry/testing/BUILD b/javatests/google/registry/testing/BUILD
index 0eee27234..0768d2a7a 100644
--- a/javatests/google/registry/testing/BUILD
+++ b/javatests/google/registry/testing/BUILD
@@ -17,8 +17,8 @@ java_library(
),
resources = [
"logging.properties",
- "//java/google/registry/env/common/default:WEB-INF/datastore-indexes.xml",
- "//java/google/registry/env/common/default:WEB-INF/queue.xml",
+ "//java/google/registry:env/common/default/WEB-INF/datastore-indexes.xml",
+ "//java/google/registry:env/common/default/WEB-INF/queue.xml",
] + glob(["*.csv"]),
visibility = ["//visibility:public"],
deps = [