testing/cloudbuild-templates/cloud-run-template.cloudbuild.yaml (64 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} \
--no-allow-unauthenticated
- 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)"
echo $(get_idtoken) > _id_token
env:
# Make substitutions available in shell script.
- "_SECRET_NAME=${_SECRET_NAME}"
- "_RUNNER_IDENTITY=${_RUNNER_IDENTITY}"
- "_SERVICE=${_SERVICE}"
# This does not seem like expected behavior. For example:
- 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'
args:
- '-c'
- |
set -e
curl -si --fail --show-error -H "Authorization: Bearer $(cat _id_token)" "$(cat _service_url)"
- 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 --region ${_SERVICE_REGION}
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:
env:
- "CLOUDSDK_RUN_REGION=${_SERVICE_REGION}"
- "GOOGLE_CLOUD_PROJECT=${PROJECT_ID}"
dynamicSubstitutions: true
# TODO: Update these User-defined substitutions
substitutions:
_SERVICE: SERVICE_NAME_PREFIX
_SAMPLE_DIR: SAMPLE_DIRECTORY
_SERVICE_REGION: us-central1
_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