testing/cloudbuild-templates/cloud-run-anthos-template.cloudbuild.yaml (71 lines of code) (raw):
steps:
- id: 'Build Container Image'
name: 'gcr.io/cloud-builders/docker:latest'
dir: '${_SAMPLE_DIR}'
args: ['build', '-t', '${_IMAGE_NAME}', '.']
- id: 'Push Container Image'
name: 'gcr.io/cloud-builders/docker:latest'
args: ['push', '${_IMAGE_NAME}']
- id: 'Deploy to Cloud Run'
name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:$_CLOUDSDK_VERSION'
entrypoint: /bin/bash
args:
- -c
- |
gcloud run deploy ${_SERVICE}-$BUILD_ID \
--image ${_IMAGE_NAME} \
--cluster ${_CLUSTER} \
--cluster-location ${_CLUSTER_LOCATION} \
--platform gke
- id: 'Get Cloud Run URL'
name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:$_CLOUDSDK_VERSION'
entrypoint: '/bin/bash'
args:
- '-c'
- |
set -e
source /workspace/testing/cloudbuild-templates/common.sh
echo $(get_url ${BUILD_ID}) > _service_url
echo "Cloud Run URL for ${_SERVICE}-$BUILD_ID is $(cat _service_url)"
- id: 'Get Cloud Run External IP'
name: 'gcr.io/cloud-builders/kubectl'
entrypoint: '/bin/bash'
args:
- '-c'
- |
get_ip() {
gcloud container clusters get-credentials ${_CLUSTER} --zone ${_CLUSTER_LOCATION} --project ${PROJECT_ID} \
&& kubectl get svc istio-ingress --namespace gke-system \
--output 'jsonpath={.status.loadBalancer.ingress[0].ip}'
}
echo $(get_ip) > _service_ip
- id: 'Integration Tests'
# TODO: Update the following image name, entrypoint, and args to fit your testing needs
name: 'gcr.io/cloud-builders/curl'
entrypoint: '/bin/sh'
dir: '${_SAMPLE_DIR}'
args:
- '-c'
- |
echo "Add integration tests!"
- id: 'Teardown'
name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:$_CLOUDSDK_VERSION'
entrypoint: '/bin/bash'
args:
- '-c'
- |
set -x
gcloud --quiet container images delete ${_IMAGE_NAME}
gcloud --quiet run services delete ${_SERVICE}-$BUILD_ID --platform gke
set +x
echo "View build details in the console: https://console.cloud.google.com/cloud-build/builds/${BUILD_ID}"
# Uncomment if skipping teardown to associate build with container image.
# images:
# - '${_IMAGE_NAME}'
options:
dynamicSubstitutions: true
# TODO: Update these User-defined substitutions
substitutions:
_SERVICE: SERVICE_NAME
_SAMPLE_DIR: SAMPLE_DIRECTORY
_CLUSTER: CLUSTER_NAME
_CLUSTER_LOCATION: _CLUSTER_LOCATION
_CLOUDSDK_VERSION: latest
_AR_REPO_NAME: samples
_AR_REGION_NAME: us-central1
_IMAGE_NAME: ${_AR_REPO_REGION}-docker.pkg.dev/${PROJECT_ID}/${_AR_REPO_NAME}/${_SERVICE}:${SHORT_SHA} # Tag docker image with git commit sha