Nest Engineering Docs
Runbooks

Run a local stack

Start local dependencies for integration testing

This runbook focuses on the Spanner emulator, which is the main local dependency for integration tests.

Start the emulator

docker run --rm -p 9010:9010 -p 9020:9020 gcr.io/cloud-spanner-emulator/emulator

Create instance and database

export SPANNER_EMULATOR_HOST=localhost:9010
export GOOGLE_CLOUD_PROJECT=local-project

curl -sS -X POST \
  "http://localhost:9020/v1/projects/${GOOGLE_CLOUD_PROJECT}/instances" \
  -H "Content-Type: application/json" \
  -d @- <<'JSON'
{
  "instanceId": "nest-spanner",
  "instance": {
    "name": "projects/local-project/instances/nest-spanner",
    "config": "emulator-config",
    "displayName": "Local Nest",
    "processingUnits": 100
  }
}
JSON

curl -sS -X POST \
  "http://localhost:9020/v1/projects/${GOOGLE_CLOUD_PROJECT}/instances/nest-spanner/databases" \
  -H "Content-Type: application/json" \
  -d '{"createStatement": "CREATE DATABASE `nest`"}'

Apply schema

./scripts/liquibase-emulator.sh update

Point services to the emulator

export SPANNER_EMULATOR_HOST=localhost:9010
export GCP_PROJECT_ID=local-project
export SPANNER_INSTANCE_ID=nest-spanner
export SPANNER_DATABASE_ID=nest

Last updated on