- ops.py + test_{upgrade,backup,restore}.py: seed ci_marker into the MySQL `ghost` DB (db service)
via the mysql CLI; rides the recipe's mysqldump --tab backup. recipe is MySQL not sqlite (stale
comment fixed). Expect restore RED -> recipe-PR (no backupbot.restore hook; immich/mattermost class).
- functional/_ghost.py: cookie-aware Ghost Admin API client (stdlib http.cookiejar; Origin CSRF hdr).
- functional/test_post_roundtrip.py: §4.3 create published post + read back (unique marker, non-vacuous);
closes the DEFERRED ghost create-post item.
- PARITY.md + recipe_meta.py updated. Authored node-free; full-lifecycle run next, NOT yet claimed.
18 lines
1.2 KiB
Python
18 lines
1.2 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 = 1200 # subprocess timeout for `abra app deploy` (cold-start ghost ~15-20min)
|
|
HTTP_TIMEOUT = 900
|
|
|
|
# Ghost's first-boot does theme + DB migrations against a fresh MySQL `ghost` DB; default TIMEOUT=300
|
|
# (abra's internal convergence wait) is too tight on cc-ci's single node. Bump to 1200s, matched
|
|
# to DEPLOY_TIMEOUT so abra finishes its convergence wait before the Python subprocess timeout.
|
|
EXTRA_ENV = {"TIMEOUT": "1200"}
|