Build an uber tarball in Cloud Build

Spinnaker currently cannot have inter-dependencies between different pipelines.
As a result we put the WAR files for all environments in one tarball which
triggers a single pipeline that first deploys to sandbox and then to
production.

Temporarily disabled pulling dependencies from GCS while that is being worked
out.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=239448777
This commit is contained in:
jianglai 2019-03-20 12:14:47 -07:00
parent d7b6394205
commit f589f387c2
2 changed files with 53 additions and 23 deletions

View file

@ -22,41 +22,40 @@ steps:
args: ['source', 'repos', 'clone', 'nomulus-internal']
- name: 'alpine'
args: ['sh', '-c', 'cp -r nomulus-internal/* .']
# Build the deployment files.
# Create a directory to store the artifacts
- name: 'alpine'
args: ['mkdir', 'nomulus']
# Build the deployment files for sandbox.
- name: 'gcr.io/${PROJECT_ID}/builder'
args:
- './gradlew'
- 'stage'
- '-x'
- 'autoLintGradle'
- '-PrepositoryUrl=gcs://domain-registry-maven-repository'
- '-Penvironment=${_ENVIRONMENT}'
- '-Penvironment=sandbox'
dir: 'gradle'
# Tar the deployment files as we cannot upload directories to GCS.
- name: 'alpine'
args: ['tar', 'cvf', '../../../default.tar', '.']
dir: 'gradle/services/default/build/staged-app'
args: ['sh', './move_artifacts.sh', 'sandbox', 'nomulus']
# Build the deployment files for alpha.
- name: 'gcr.io/${PROJECT_ID}/builder'
args:
- './gradlew'
- 'stage'
- '-x'
- 'autoLintGradle'
- '-Penvironment=alpha'
dir: 'gradle'
- name: 'alpine'
args: ['tar', 'cvf', '../../../pubapi.tar', '.']
dir: 'gradle/services/pubapi/build/staged-app'
args: ['sh', './move_artifacts.sh', 'alpha', 'nomulus']
# Create the uber tarball including all environments.
- name: 'alpine'
args: ['tar', 'cvf', '../../../backend.tar', '.']
dir: 'gradle/services/backend/build/staged-app'
- name: 'alpine'
args: ['tar', 'cvf', '../../../tools.tar', '.']
dir: 'gradle/services/tools/build/staged-app'
# Tar files to upload to GCS.
args: ['tar', 'cvf', '../nomulus.tar', '.']
dir: 'nomulus'
# The tarball to upload to GCS.
artifacts:
objects:
location: 'gs://${PROJECT_ID}-deploy/${TAG_NAME}/${_ENVIRONMENT}'
paths:
- 'gradle/services/default.tar'
- 'gradle/services/pubapi.tar'
- 'gradle/services/backend.tar'
- 'gradle/services/tools.tar'
location: 'gs://${PROJECT_ID}-deploy/${TAG_NAME}'
paths: ['nomulus.tar']
timeout: 3600s
# Default values
substitutions:
_ENVIRONMENT: alpha
options:
machineType: 'N1_HIGHCPU_8'

31
move_artifacts.sh Executable file
View file

@ -0,0 +1,31 @@
#!/bin/bash
# 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.
# This script moves GAE artifacts for a given environment to a designated location.
if [ $# -ne 2 ];
then
echo "Usage: $0 alpha|crash|sandbox|production destination."
exit 1
fi
dest="$2/$1"
mkdir -p "${dest}"
for service in default pubapi backend tools
do
mv gradle/services/"${service}"/build/staged-app "${dest}/${service}"
done