23 lines
1.7 KiB
Python
23 lines
1.7 KiB
Python
# Per-recipe harness config for ghost (Phase 2 Q4.4 — Node.js publishing platform).
|
|
# Ghost serves an HTML site at `/`; admin UI at `/ghost/`. The first GET to /ghost/ redirects
|
|
# to the setup wizard (302). Ghost exposes a JSON Content API at /ghost/api/content/ which
|
|
# requires an API key; the Admin API at /ghost/api/admin/ requires a session/token (see
|
|
# functional/_ghost.py — version-negotiated, no /v3/ path).
|
|
# State lives in a **MySQL** `ghost` DB (compose `db` service, mysql:8.0) + the `ghost_content`
|
|
# volume (themes/images) — NOT sqlite. The `db` service is backupbot-labelled with a logical
|
|
# mysqldump pre-hook; P4 (ops.py + test_{backup,restore,upgrade}.py) seeds a `ci_marker` row there.
|
|
HEALTH_PATH = "/" # Ghost serves a themed site HTML at root (200)
|
|
HEALTH_OK = (200,)
|
|
DEPLOY_TIMEOUT = 2400 # subprocess timeout for `abra app deploy`
|
|
HTTP_TIMEOUT = 900
|
|
|
|
# Ghost's first-boot does a full schema migration (dozens of tables) against a fresh MySQL `ghost`
|
|
# DB. On cc-ci's slow single node this takes ~6min, during which the recipe healthcheck
|
|
# (start_period 1m → ~5min grace) marks the still-booting task unhealthy and swarm kills it; the
|
|
# NEXT task finds the schema already created and boots fast → converges. But the first task's
|
|
# migration + the early MySQL-not-ready (`exit 2`) app restarts can eat ~18min, so the default 1200s
|
|
# convergence wait timed out right as it was converging. Bump to 2400s (matched to DEPLOY_TIMEOUT) so
|
|
# the post-migration fast-boot task has room to converge within one deploy (the volume persists
|
|
# across the in-deploy task restarts). Documented as heavy-recipe cold-boot fragility in DECISIONS.
|
|
EXTRA_ENV = {"TIMEOUT": "2400"}
|