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]