setup/cloudbuild.yaml (57 lines of code) (raw):
# Copyright 2019 Google LLC
#
# 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.
timeout: 10800s
substitutions:
_ACTION: apply
_NAME: broker
tags:
- kube-app-launcher-base
- kube-app-launcher-setup
steps:
###
# Cleanup any existing sub-jobs to prevent overlapping executions.
###
- name: "gcr.io/cloud-builders/gcloud"
id: cleanup-sub-jobs
entrypoint: bash
args:
- -c
- |
gcloud -q builds list --ongoing --filter='tags[]~kube-app-launcher-infra' --format='value(id)' | \
xargs --no-run-if-empty gcloud -q builds cancel >/dev/null
###
# Create GCS bucket to store terraform state
###
- name: "gcr.io/cloud-builders/gsutil"
id: "create-tf-state-bucket"
entrypoint: "/bin/bash"
args:
- "-xe"
- "-c"
- |
gsutil mb gs://${PROJECT_ID}-${_NAME}-tf-state || true
waitFor: ["-"]
###
# Builds the image used to run the deployment
###
- name: 'gcr.io/cloud-builders/docker'
id: installer-image-pull
entrypoint: 'bash'
args: ["-c", "if [[ '${_USE_CACHE}' == 'true' ]]; then (docker pull gcr.io/${PROJECT_ID}/${_NAME}-installer:latest || exit 0); fi"]
waitFor: ["-"]
- name: 'gcr.io/cloud-builders/docker'
id: build-installer-image
args: [
'build',
'-t', 'gcr.io/${PROJECT_ID}/${_NAME}-installer:latest',
'.'
]
waitFor:
- installer-image-pull
- name: 'gcr.io/cloud-builders/docker'
id: push-installer-image
args: [
'push',
'gcr.io/${PROJECT_ID}/${_NAME}-installer:latest',
]
waitFor:
- build-installer-image
###
# base infrasturcture
###
- name: "gcr.io/cloud-builders/gcloud"
id: "infra-base-terraform"
args:
- "builds"
- "submit"
- "infra"
- "--config"
- "infra/cloudbuild.yaml"
- "--substitutions"
- "_NAME=${_NAME},_ACTION=${_ACTION}"