В случае с Облако SQL и Node.js это будет выглядеть примерно так:
steps:
# Install Node.js dependencies
- id: install
name: node:carbon
entrypoint: yarn
waitFor: ['-']
# Launch Cloud SQL proxy and keep it open
# until the db migration step is finished
# https://cloud.google.com/sql/docs/postgres/sql-proxy
- id: proxy
name: gcr.io/cloudsql-docker/gce-proxy
entrypoint: sh
args:
- '-c'
- '/cloud_sql_proxy -dir=/cloudsql -instances=<CLOUD_SQL_CONNECTION> & while [ ! -f /cloudsql/stop ]; do sleep 2; done'
waitFor: ['-']
timeout: '1200s'
volumes:
- name: db
path: /cloudsql
# Migrate database schema to the latest version
# https://knexjs.org/#Migrations-CLI
- id: migrate
name: node:carbon
entrypoint: sh
args:
- '-c'
- 'yarn knex migrate:latest && touch /cloudsql/stop'
timeout: '1200s'
waitFor: ['install']
volumes:
- name: db
path: /cloudsql
timeout: '1200s'
Вы бы запустили yarn install
и Cloud SQL Proxy параллельно, когда шаг install
завершится, вы запустите yarn knex migrate:latest
и затем остановите SQL-прокси. Чтобы это работало, в вашем проекте GCP должен быть включен API администрирования Cloud SQL .
Где <CLOUD_SQL_INSTANCE>
- это имя вашего подключения к экземпляру Cloud SQL, которое можно найти здесь . То же имя будет использоваться в настройках соединения SQL, например, host=/cloudsql/my-project/us-central1/db
.
Также убедитесь, что учетная запись службы Cloud Build играет роль «Cloud SQL Client» в проекте GCP, где находится экземпляр db.