sql-proxy/cloudbuild.yaml (66 lines of code) (raw):
# Copyright 2021 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.
# [START cloudbuild_sql_proxy]
steps:
- id: "docker-build"
name: "gcr.io/cloud-builders/docker"
args: ["build", "-t", "${_IMAGE_NAME}", "sql-proxy/."]
- id: "docker-push"
name: "gcr.io/cloud-builders/docker"
args: ["push", "${_IMAGE_NAME}"]
# [START cloudbuild_sql_proxy_layer]
- id: "docker-layer"
name: "gcr.io/cloud-builders/docker"
entrypoint: /bin/bash
args:
- '-c'
- |
echo "FROM $_IMAGE_NAME
COPY --from=gcr.io/cloud-sql-connectors/cloud-sql-proxy /cloud-sql-proxy /cloudsql/cloud-sql-proxy" > Dockerfile-proxy;
docker build -f Dockerfile-proxy -t ${_IMAGE_NAME}-proxy .
# [END cloudbuild_sql_proxy_layer]
# [START cloudbuild_sql_proxy_tcp]
# For TCP connections
- id: "migrate-tcp"
name: "${_IMAGE_NAME}-proxy"
dir: sql-proxy
env:
- "DATABASE_NAME=${_DATABASE_NAME}"
- "DATABASE_USER=${_DATABASE_USER}"
- "DATABASE_HOST=127.0.0.1"
- "DATABASE_PORT=${_DATABASE_PORT}"
- "DATABASE_TYPE=${_DATABASE_TYPE}"
secretEnv:
- DATABASE_PASS
entrypoint: /bin/bash
args:
- '-c'
- |
/cloudsql/cloud-sql-proxy --port ${_DATABASE_PORT} ${_INSTANCE_CONNECTION_NAME} & sleep 2;
python migrate.py # for example
# [END cloudbuild_sql_proxy_tcp]
# [START cloudbuild_sql_proxy_socket]
# For Unix Socket connections
- id: "migrate-socket"
name: "${_IMAGE_NAME}-proxy"
dir: sql-proxy
env:
- "DATABASE_NAME=${_DATABASE_NAME}"
- "DATABASE_USER=${_DATABASE_USER}"
- "INSTANCE_CONNECTION_NAME=${_INSTANCE_CONNECTION_NAME}"
- "DATABASE_TYPE=${_DATABASE_TYPE}"
secretEnv:
- DATABASE_PASS
entrypoint: /bin/bash
args:
- '-c'
- |
/cloudsql/cloud-sql-proxy --unix-socket /cloudsql ${_INSTANCE_CONNECTION_NAME} & sleep 2;
if [ $_DATABASE_TYPE = 'mssql' ]; then echo "MSSQL doesn't support Unix Sockets. Skippng."; exit 0; fi;
python migrate.py # for example.
# [END cloudbuild_sql_proxy_socket]
options:
dynamicSubstitutions: true
substitutions:
_DATABASE_USER: myuser
_DATABASE_NAME: mydatabase
_INSTANCE_CONNECTION_NAME: ${PROJECT_ID}:us-central1:myinstance
_DATABASE_PORT: '5432'
_DATABASE_TYPE: postgres
_DATABASE_PASSWORD_KEY: database_password
_AR_REPO_REGION: us-central1
_AR_REPO_NAME: my-docker-repo
_IMAGE_NAME: ${_AR_REPO_REGION}-docker.pkg.dev/${PROJECT_ID}/${_AR_REPO_NAME}/sample-sql-proxy
availableSecrets:
secretManager:
- versionName: projects/$PROJECT_ID/secrets/${_DATABASE_PASSWORD_KEY}/versions/latest
env: DATABASE_PASS
# [END cloudbuild_sql_proxy]