Запускать миграцию базы данных node.js в Google Cloud SQL во время сборки Google Cloud Build - PullRequest
0 голосов
/ 16 сентября 2018

Я хотел бы запустить миграцию базы данных, написанную в node.js, во время процесса Cloud Build.

В настоящее время выполняется команда переноса базы данных, но кажется, что процесс Cloud Build не имеет доступа для подключения к Cloud SQL через IP-адрес с именем пользователя / паролем.

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

В случае с Облако 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.

0 голосов
/ 16 сентября 2018

Cloud Build запускается с использованием учетной записи службы, и, похоже, вам необходимо предоставить доступ к Cloud SQL для этой учетной записи.Дополнительную информацию о настройке разрешений учетной записи службы можно найти здесь .

...