mirror of
https://github.com/google/nomulus
synced 2025-12-23 06:15:42 +00:00
140 lines
4.9 KiB
Groovy
140 lines
4.9 KiB
Groovy
// Copyright 2024 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'
|
|
|
|
tasks.register('copyJettyBase', Copy) {
|
|
from(layout.projectDirectory.dir('src/main')) {
|
|
include 'jetty-base/**'
|
|
}
|
|
into layout.buildDirectory
|
|
}
|
|
|
|
war {
|
|
setArchiveBaseName("nomulus")
|
|
setDestinationDirectory(layout.buildDirectory.dir('jetty-base/webapps'))
|
|
dependsOn(tasks.named('copyJettyBase'))
|
|
}
|
|
|
|
tasks.named('compileTestJava') {
|
|
// Gradle insists on this execution dependency.
|
|
dependsOn(tasks.named('copyJettyBase'))
|
|
}
|
|
|
|
dependencies {
|
|
implementation project(':core')
|
|
}
|
|
|
|
tasks.register('copyConsole', Copy) {
|
|
from("${rootDir}/console-webapp/staged/dist") {
|
|
include "**/*"
|
|
}
|
|
into layout.buildDirectory.dir('jetty-base/webapps/console')
|
|
dependsOn(':console-webapp:buildConsoleWebapp')
|
|
}
|
|
|
|
tasks.register('stage') {
|
|
dependsOn(tasks.named('war'))
|
|
dependsOn(tasks.named('copyConsole'))
|
|
}
|
|
|
|
tasks.register('buildNomulusImage', Exec) {
|
|
commandLine 'docker', 'build', '-t', 'nomulus', '.'
|
|
dependsOn(tasks.named('stage'))
|
|
}
|
|
|
|
tasks.register('tagNomulusImage', Exec) {
|
|
commandLine 'docker', 'tag', 'nomulus', "gcr.io/${rootProject.gcpProject}/nomulus"
|
|
dependsOn(tasks.named('buildNomulusImage'))
|
|
}
|
|
|
|
tasks.register('pushNomulusImage', Exec) {
|
|
configure verifyDeploymentConfig
|
|
commandLine 'docker', 'push', "gcr.io/${rootProject.gcpProject}/nomulus"
|
|
dependsOn(tasks.named('tagNomulusImage'))
|
|
}
|
|
|
|
tasks.register('run', JavaExec) {
|
|
// We do the check when the task actually runs, not when we define it.
|
|
// This way if one doesn't set the value, one can still run other tasks.
|
|
doFirst {
|
|
def jetty_home = System.getenv('JETTY_HOME')
|
|
if (jetty_home == null) {
|
|
throw new GradleException('JETTY_HOME is not set.')
|
|
}
|
|
}
|
|
def jetty_home = System.getenv('JETTY_HOME')
|
|
def environment = rootProject.environment
|
|
workingDir(layout.buildDirectory.dir('jetty-base'))
|
|
classpath = files(jetty_home + '/start.jar')
|
|
systemProperty('google.registry.environment', environment)
|
|
systemProperty('java.util.logging.config.file', "${projectDir}/logging.properties")
|
|
dependsOn(tasks.named('stage'))
|
|
}
|
|
|
|
tasks.register('buildDeployer', Exec) {
|
|
workingDir("${rootDir}/release/builder/")
|
|
commandLine 'go', 'build', '-o', "${buildDir}/deployer", 'deployCloudSchedulerAndQueue.go'
|
|
}
|
|
|
|
// Once GKE is the only option, we can use the same task in the root project instead.
|
|
tasks.register('deployCloudSchedulerAndQueue') {
|
|
configure verifyDeploymentConfig
|
|
dependsOn(tasks.named('deployCloudScheduler'), tasks.named('deployQueue'))
|
|
}
|
|
|
|
tasks.register('deployCloudScheduler', Exec) {
|
|
dependsOn(tasks.named('buildDeployer'))
|
|
workingDir("$buildDir")
|
|
commandLine './deployer',
|
|
"${rootDir}/core/src/main/java/google/registry/config/files/nomulus-config-${rootProject.environment}.yaml",
|
|
"${rootDir}/core/src/main/java/google/registry/config/files/tasks/cloud-scheduler-tasks-${rootProject.environment}.xml",
|
|
rootProject.gcpProject, '--gke'
|
|
// Only deploy the tasks after Nomulus itself is deployed.
|
|
mustRunAfter(tasks.named('deployToGke'))
|
|
}
|
|
|
|
tasks.register('deployQueue', Exec) {
|
|
dependsOn(tasks.named('buildDeployer'))
|
|
workingDir("$buildDir")
|
|
commandLine './deployer',
|
|
"${rootDir}/core/src/main/java/google/registry/config/files/nomulus-config-${rootProject.environment}.yaml",
|
|
"${rootDir}/core/src/main/java/google/registry/config/files/cloud-tasks-queue.xml",
|
|
rootProject.gcpProject, '--gke'
|
|
// Only deploy the queues after Nomulus itself is deployed.
|
|
mustRunAfter(tasks.named('deployToGke'))
|
|
}
|
|
|
|
tasks.register('deployToGke', Exec) {
|
|
dependsOn('pushNomulusImage', ':proxy:pushProxyImage')
|
|
commandLine './deploy-nomulus-for-env.sh', "${rootProject.environment}", "${rootProject.baseDomain}"
|
|
}
|
|
|
|
tasks.register('deployNomulus') {
|
|
dependsOn('deployToGke', 'deployCloudSchedulerAndQueue')
|
|
}
|
|
|
|
tasks.register('getEndpoints', Exec) {
|
|
doFirst {
|
|
if (rootProject.ext.gcpProject == null) {
|
|
def error = 'You must specify -Penvironment={alpha,crash,qa}'
|
|
System.err.println("\033[33;1m${error}\033[0m")
|
|
throw GradleException("Aborting: ${error}")
|
|
}
|
|
}
|
|
commandLine './get-endpoints.py', "${rootProject.gcpProject}"
|
|
}
|
|
|
|
project.build.dependsOn(tasks.named('buildNomulusImage'))
|