fed8b2eed7
Backend release / release (push) Waiting to run
Bandit Security Scan / bandit_scan (push) Waiting to run
Build and push multi-arch DocsGPT Docker image / build (linux/amd64, ubuntu-latest, amd64) (push) Waiting to run
Build and push multi-arch DocsGPT Docker image / build (linux/arm64, ubuntu-24.04-arm, arm64) (push) Waiting to run
Build and push multi-arch DocsGPT Docker image / manifest (push) Blocked by required conditions
Build and push DocsGPT FE Docker image for development / build (linux/amd64, ubuntu-latest, amd64) (push) Waiting to run
Build and push DocsGPT FE Docker image for development / build (linux/arm64, ubuntu-24.04-arm, arm64) (push) Waiting to run
Build and push DocsGPT FE Docker image for development / manifest (push) Blocked by required conditions
Python linting / ruff (push) Waiting to run
Run python tests with pytest / Run tests and count coverage (3.12) (push) Waiting to run
React Widget Build / build (push) Waiting to run
56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
"""One-shot bootstrap: run all Alembic migrations against POSTGRES_URI.
|
|
|
|
Intended use:
|
|
|
|
* local dev, after setting ``POSTGRES_URI`` in ``.env``::
|
|
|
|
python scripts/db/init_postgres.py
|
|
|
|
* CI, as a step before running the pytest suite.
|
|
|
|
* Docker image build or container start, if the operator wants the
|
|
migrations applied automatically on first boot.
|
|
|
|
This script is a thin wrapper around ``alembic upgrade head``. It exists
|
|
separately so the same command is discoverable from the repo root without
|
|
remembering the ``-c application/alembic.ini`` invocation.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
from alembic import command
|
|
from alembic.config import Config
|
|
|
|
REPO_ROOT = Path(__file__).resolve().parents[2]
|
|
ALEMBIC_INI = REPO_ROOT / "application" / "alembic.ini"
|
|
|
|
|
|
def main() -> int:
|
|
"""Apply every pending migration up to ``head``.
|
|
|
|
Returns:
|
|
``0`` on success, ``1`` on failure. Non-zero is propagated as the
|
|
process exit code so CI jobs fail loudly.
|
|
"""
|
|
if not ALEMBIC_INI.exists():
|
|
print(f"alembic.ini not found at {ALEMBIC_INI}", file=sys.stderr)
|
|
return 1
|
|
|
|
cfg = Config(str(ALEMBIC_INI))
|
|
# Make `script_location` resolve correctly when invoked from any cwd.
|
|
cfg.set_main_option("script_location", str(ALEMBIC_INI.parent / "alembic"))
|
|
|
|
try:
|
|
command.upgrade(cfg, "head")
|
|
except Exception as exc: # noqa: BLE001 — surface everything to the operator
|
|
print(f"alembic upgrade failed: {exc}", file=sys.stderr)
|
|
return 1
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|