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)