The 2026-07-06 prod outage was a missed manual migration: the 0002 job_events migration never ran against prod, so the worker crash-looped on every job. Make the deploy pipeline own it: - railway.json sets `npm run db:migrate` as the pre-deploy command. Railway runs it with the service's env before starting the new deployment; a failed migration fails the deploy and the old version keeps serving. - runMigrations() now serializes on a Postgres advisory lock so api and worker pre-deploys firing off the same push can't race Drizzle's journal writes. - DEPLOY.md: document the automatic path; keep the manual command for first-time setup. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
7 lines
123 B
JSON
7 lines
123 B
JSON
{
|
|
"$schema": "https://railway.com/railway.schema.json",
|
|
"deploy": {
|
|
"preDeployCommand": "npm run db:migrate"
|
|
}
|
|
}
|