feat: make the site database authoritative for documents and catalog
Verify database-backed documents / verify (pull_request) Failing after 6m6s
Verify database-backed documents / verify (pull_request) Failing after 6m6s
This commit is contained in:
@@ -7,6 +7,7 @@ import re
|
||||
import shutil
|
||||
import socket
|
||||
import subprocess
|
||||
import time
|
||||
import urllib.request
|
||||
from ci import APP, ROOT, fingerprint, run
|
||||
|
||||
@@ -108,6 +109,21 @@ def main() -> None:
|
||||
run("docker", "run", "--rm", "--network", "none", "--mount",
|
||||
f"type=bind,src={auth_dir},dst=/auth", actual,
|
||||
"node", "apps/docs/auth-cli.cjs", "init")
|
||||
# Back up the entire shared database, then bootstrap documents only when empty.
|
||||
# A normal release never reimports, overwrites or resets authored DB content.
|
||||
migration = ROOT / ".artifacts/documents-migration.json"
|
||||
if not migration.is_file():
|
||||
raise RuntimeError("Verified document migration export is missing")
|
||||
backup = f"/auth/before-documents-{sha}-{time.time_ns()}.sqlite"
|
||||
run("docker", "run", "--rm", "--network", "none", "--mount",
|
||||
f"type=bind,src={auth_dir},dst=/auth", actual,
|
||||
"node", "apps/docs/docs-cli.cjs", "backup", backup)
|
||||
subprocess.run(["docker", "run", "--rm", "-i", "--network", "none", "--mount",
|
||||
f"type=bind,src={auth_dir},dst=/auth", actual,
|
||||
"node", "apps/docs/docs-cli.cjs", "import", "--if-empty"],
|
||||
input=migration.read_bytes(), check=True)
|
||||
shutil.copyfile(ROOT / "scripts/docs-admin.sh", DEPLOY_ROOT / "docs")
|
||||
(DEPLOY_ROOT / "docs").chmod(0o750)
|
||||
shutil.copyfile(ROOT / "scripts/auth-admin.sh", DEPLOY_ROOT / "auth")
|
||||
(DEPLOY_ROOT / "auth").chmod(0o750)
|
||||
current = DEPLOY_ROOT / "current"
|
||||
|
||||
Reference in New Issue
Block a user