cloudbuild-k8s.yaml (119 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: 1800s # 30m
options:
workerPool: projects/${PROJECT_ID}/locations/us-central1/workerPools/gcb-workers-pool-e2
substitutions:
_CLUSTER_NAME: marketplace-testing
_CLUSTER_LOCATION: us-central1
steps:
- id: Pull Dev Image
name: gcr.io/cloud-builders/docker
dir: k8s
entrypoint: bash
args:
- -exc
- |
TAG="$$(cat ./MARKETPLACE_TOOLS_TAG)"
docker pull "gcr.io/cloud-marketplace-tools/k8s/dev:$$TAG"
docker tag "gcr.io/cloud-marketplace-tools/k8s/dev:$$TAG" "gcr.io/cloud-marketplace-tools/k8s/dev:local"
- id: Setup Crane
name: gcr.io/cloud-builders/curl
entrypoint: sh
args:
- '-c'
- |
curl -L -o /workspace/crane.tar.gz "https://github.com/google/go-containerregistry/releases/download/v0.20.2/go-containerregistry_Linux_x86_64.tar.gz" \
&& tar -zxvf /workspace/crane.tar.gz crane \
&& chmod 755 /workspace/crane \
&& chmod +x /workspace/crane \
&& rm /workspace/crane.tar.gz \
&& echo "crane successfully installed"
- id: Initialize Credentials
name: gcr.io/cloud-builders/gcloud
waitFor:
- '-'
entrypoint: bash
args:
- -exc
- |
gcloud container clusters get-credentials '${_CLUSTER_NAME}' --zone '${_CLUSTER_LOCATION}' --project '$PROJECT_ID'
mkdir -p /workspace/.kube/
cp -r $$HOME/.kube/ /workspace/
mkdir -p /workspace/.config/gcloud/
cp -r $$HOME/.config/gcloud/ /workspace/.config/
- id: Install CRDs
name: gcr.io/cloud-marketplace-tools/k8s/dev:local
waitFor:
- Initialize Credentials
- Pull Dev Image
env:
- 'KUBE_CONFIG=/workspace/.kube'
- 'GCLOUD_CONFIG=/workspace/.config/gcloud'
# Use local Docker network named cloudbuild as described here:
# https://cloud.google.com/cloud-build/docs/overview#build_configuration_and_build_steps
- 'DOCKER_NETWORK=cloudbuild'
- 'CRANE_BIN=/workspace/crane'
dir: k8s/${_SOLUTION_NAME}
entrypoint: bash
args:
- -exc
- |
gcloud container clusters get-credentials '${_CLUSTER_NAME}' --zone '${_CLUSTER_LOCATION}' --project '$PROJECT_ID'
make crd/install
- id: Run diagnostic tool
name: gcr.io/cloud-marketplace-tools/k8s/dev:local
waitFor:
- Install CRDs
env:
- 'KUBE_CONFIG=/workspace/.kube'
- 'GCLOUD_CONFIG=/workspace/.config/gcloud'
- 'VERIFICATION_LOGS_PATH=/workspace/k8s/${_SOLUTION_NAME}/.mpdev_logs'
- 'CRANE_BIN=/workspace/crane'
# Use local Docker network named cloudbuild as described here:
# https://cloud.google.com/cloud-build/docs/overview#build_configuration_and_build_steps
- 'DOCKER_NETWORK=cloudbuild'
dir: k8s/${_SOLUTION_NAME}
args:
- make
- app/doctor
- id: Build Solution
name: gcr.io/cloud-marketplace-tools/k8s/dev:local
waitFor:
- Run diagnostic tool
env:
- 'KUBE_CONFIG=/workspace/.kube'
- 'GCLOUD_CONFIG=/workspace/.config/gcloud'
- 'VERIFICATION_LOGS_PATH=/workspace/k8s/${_SOLUTION_NAME}/.mpdev_logs'
- 'CRANE_BIN=/workspace/crane'
# Use local Docker network named cloudbuild as described here:
# https://cloud.google.com/cloud-build/docs/overview#build_configuration_and_build_steps
- 'DOCKER_NETWORK=cloudbuild'
dir: k8s/${_SOLUTION_NAME}
args:
- make
- -j4
- app/build
- id: Verify Solution
name: gcr.io/cloud-marketplace-tools/k8s/dev:local
waitFor:
- Build Solution
env:
- 'KUBE_CONFIG=/workspace/.kube'
- 'GCLOUD_CONFIG=/workspace/.config/gcloud'
- 'VERIFICATION_LOGS_PATH=/workspace/k8s/${_SOLUTION_NAME}/.mpdev_logs'
- 'CRANE_BIN=/workspace/crane'
# Use local Docker network named cloudbuild as described here:
# https://cloud.google.com/cloud-build/docs/overview#build_configuration_and_build_steps
- 'DOCKER_NETWORK=cloudbuild'
dir: k8s/${_SOLUTION_NAME}
args:
- make
- -j4
- app/verify
- id: Verify Solution Extra Configs
name: gcr.io/cloud-marketplace-tools/k8s/dev:local
waitFor:
- Build Solution
env:
- 'KUBE_CONFIG=/workspace/.kube'
- 'GCLOUD_CONFIG=/workspace/.config/gcloud'
- 'VERIFICATION_LOGS_PATH=/workspace/k8s/${_SOLUTION_NAME}/.mpdev_logs'
# Use local Docker network named cloudbuild as described here:
# https://cloud.google.com/cloud-build/docs/overview#build_configuration_and_build_steps
- 'DOCKER_NETWORK=cloudbuild'
- 'CRANE_BIN=/workspace/crane'
dir: k8s/${_SOLUTION_NAME}
entrypoint: bash
args:
- -exc
- |
bash <(jq -r --arg solution ${_SOLUTION_NAME} '.[$solution] | .[]? | "\(.env_vars | join(" ")) make -j4 app/verify"' ../../scripts/extra_configs.json)