images/cloudbuild.yaml (191 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: 3600s
substitutions:
_USE_CACHE: "false"
_IMAGE_PREFIX: kube-pod-broker
_IMAGE_TAG: latest
options:
machineType: N1_HIGHCPU_8
tags:
- kube-app-launcher-images
###
# Images to be pushed
###
images: [
# controller
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-controller:${_IMAGE_TAG}',
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-controller:latest',
# web
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-web:${_IMAGE_TAG}',
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-web:latest',
# coturn
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-coturn:${_IMAGE_TAG}',
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-coturn:latest',
# coturn-web
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-coturn-web:${_IMAGE_TAG}',
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-coturn-web:latest',
# broker gce proxy
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-gce-proxy:${_IMAGE_TAG}',
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-gce-proxy:latest',
# autoneg controller
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-autoneg-controller:${_IMAGE_TAG}',
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-autoneg-controller:latest',
]
steps:
###
# Pod broker controller image
###
- name: 'gcr.io/cloud-builders/docker'
id: controller-pull
entrypoint: 'bash'
args: ["-c", "if [[ '${_USE_CACHE}' == 'true' ]]; then (docker pull gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-controller:latest || exit 0); fi"]
waitFor: ["-"]
- name: 'gcr.io/cloud-builders/docker'
id: controller
args: [
'build',
'-t', 'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-controller:${_IMAGE_TAG}',
'--cache-from', 'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-controller:latest',
'controller'
]
waitFor:
- controller-pull
- name: 'gcr.io/cloud-builders/docker'
id: controller-tags
args: [
'tag',
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-controller:${_IMAGE_TAG}',
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-controller:latest',
]
waitFor:
- controller
###
# Pod broker web image
###
- name: 'gcr.io/cloud-builders/docker'
id: web-pull
entrypoint: 'bash'
args: ["-c", "if [[ '${_USE_CACHE}' == 'true' ]]; then (docker pull gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-web:latest || exit 0); fi"]
waitFor: ["-"]
- name: 'gcr.io/cloud-builders/docker'
id: web
args: [
'build',
'-t', 'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-web:${_IMAGE_TAG}',
'--cache-from', 'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-web:latest',
'web'
]
waitFor:
- web-pull
- name: 'gcr.io/cloud-builders/docker'
id: web-tags
args: [
'tag',
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-web:${_IMAGE_TAG}',
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-web:latest',
]
waitFor:
- web
###
# Coturn image
###
- name: 'gcr.io/cloud-builders/docker'
id: coturn-pull
entrypoint: 'bash'
args: ["-c", "if [[ '${_USE_CACHE}' == 'true' ]]; then (docker pull gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-coturn:latest || exit 0); fi"]
waitFor: ["-"]
- name: 'gcr.io/cloud-builders/docker'
id: coturn
args: [
'build',
'-t', 'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-coturn:${_IMAGE_TAG}',
'--cache-from', 'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-coturn:latest',
'coturn'
]
waitFor:
- coturn-pull
- name: 'gcr.io/cloud-builders/docker'
id: coturn-tags
args: [
'tag',
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-coturn:${_IMAGE_TAG}',
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-coturn:latest',
]
waitFor:
- coturn
###
# Coturn web image
###
- name: 'gcr.io/cloud-builders/docker'
id: coturn-web-pull
entrypoint: 'bash'
args: ["-c", "if [[ '${_USE_CACHE}' == 'true' ]]; then (docker pull gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-coturn-web:latest || exit 0); fi"]
waitFor: ["-"]
- name: 'gcr.io/cloud-builders/docker'
id: coturn-web
args: [
'build',
'-t', 'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-coturn-web:${_IMAGE_TAG}',
'--cache-from', 'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-coturn-web:latest',
'coturn-web'
]
waitFor:
- coturn-web-pull
- name: 'gcr.io/cloud-builders/docker'
id: coturn-web-tags
args: [
'tag',
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-coturn-web:${_IMAGE_TAG}',
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-coturn-web:latest',
]
waitFor:
- coturn-web
###
# Broker GCE proxy image
###
- name: 'gcr.io/cloud-builders/docker'
id: gce-proxy-pull
entrypoint: 'bash'
args: ["-c", "if [[ '${_USE_CACHE}' == 'true' ]]; then (docker pull gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-gce-proxy:latest || exit 0); fi"]
waitFor: ["-"]
- name: 'gcr.io/cloud-builders/docker'
id: gce-proxy
args: [
'build',
'-t', 'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-gce-proxy:${_IMAGE_TAG}',
'--cache-from', 'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-gce-proxy:latest',
'gce-proxy'
]
waitFor:
- gce-proxy-pull
- name: 'gcr.io/cloud-builders/docker'
id: gce-proxy-tags
args: [
'tag',
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-gce-proxy:${_IMAGE_TAG}',
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-gce-proxy:latest',
]
waitFor:
- gce-proxy
###
# GKE AutoNEG Controller fork with retry patch
###
- name: 'gcr.io/cloud-builders/docker'
id: autoneg-controller-pull
entrypoint: 'bash'
args: ["-c", "if [[ '${_USE_CACHE}' == 'true' ]]; then (docker pull gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-autoneg-controller:latest || exit 0); fi"]
waitFor: ["-"]
- name: gcr.io/cloud-builders/git
id: autoneg-controller-clone
args: ['clone', 'https://github.com/danisla/gke-autoneg-controller', '-b', 'retry-register-with-backend']
waitFor:
- autoneg-controller-pull
- name: 'gcr.io/cloud-builders/go'
id: autoneg-controller-build
dir: gke-autoneg-controller
entrypoint: 'sh'
args:
- "-exc"
- |
make generate
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build -a -o manager main.go
cat - > Dockerfile <<EOF
FROM gcr.io/distroless/static:latest
WORKDIR /
COPY manager .
ENTRYPOINT ["/manager"]
EOF
waitFor:
- autoneg-controller-clone
- name: 'gcr.io/cloud-builders/docker'
id: autoneg-controller-docker
dir: gke-autoneg-controller
args: [
'build',
'-t', 'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-autoneg-controller:${_IMAGE_TAG}',
'--cache-from', 'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-autoneg-controller:latest',
'.'
]
waitFor:
- autoneg-controller-build
- name: 'gcr.io/cloud-builders/docker'
id: autoneg-controller-tags
args: [
'tag',
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-autoneg-controller:${_IMAGE_TAG}',
'gcr.io/${PROJECT_ID}/${_IMAGE_PREFIX}-autoneg-controller:latest',
]
waitFor:
- autoneg-controller-docker