Skip to content

Deploying to Production

This guide explains how to deploy the warehouse to production.

Automated Deployment (Tag Push)

Production deployments are triggered automatically by pushing a release tag to the repository. The tag pattern 2024.11.08 (date format) triggers a prod deployment.

Workflow

  1. A release tag is pushed (e.g., git push origin 2024.11.08).
  2. GitHub Actions runs deploy.yml:
  3. Builds the custom Metabase Docker image from ./metabase/Dockerfile and pushes it to GHCR (ghcr.io/compilerla/warehouse/metabase:<sha>).
  4. Terraform applies infrastructure changes, injecting the new image tag via TF_VAR_metabase_image_tag in GitHub Actions.
  5. Cloud Run rolls out the new Metabase container, which uses socat to bridge Cloud Run’s Cloud SQL Unix socket to TCP 5432 for standard PostgreSQL JDBC.
  6. If it’s a final release tag (no -rc suffix), a GitHub release is created with generated release notes.

Required Inputs (workflow_dispatch)

When triggering manually via workflow_dispatch, you must provide:

  • metabase_image_tag: The Docker image tag to deploy (e.g. v0.65.2 or a Git SHA). The registry path (ghcr.io/compilerla/warehouse/metabase) is hardcoded in Terraform.

Manual Steps (Dev/Test)

For non-production environments, the same workflow runs via workflow_dispatch with the metabase_image_tag input, or automatically via -rc release candidate tags.

Cost Estimates

For a detailed breakdown of the initial monthly production costs, see the Cost Estimates page.