scripts/audit_ci_contract.py
Rama main · réplica de lectura del repositorio original.
#!/usr/bin/env python3
"""Check the repository's minimum CI contract from workflow text."""
from __future__ import annotations
from pathlib import Path
_REQUIRED = {
"main push trigger": "branches: [main]",
"pull request trigger": "pull_request:",
"unit tests": "pytest -m \"not integration and not stack\" -q",
"dbt parse": "dbt parse",
"compose validation": "docker compose -f deploy/docker-compose.yml config -q",
"maintenance audits": "python -m scripts.run_maintenance_audits",
}
def missing_ci_contract(path: Path) -> tuple[str, ...]:
text = path.read_text(encoding="utf-8")
return tuple(name for name, needle in _REQUIRED.items() if needle not in text)
def main() -> int:
path = Path(__file__).resolve().parents[1] / ".github" / "workflows" / "ci.yml"
missing = missing_ci_contract(path)
if missing:
print("Missing CI contract elements: " + ", ".join(missing))
return 1
print("CI contract OK")
return 0
if __name__ == "__main__":
raise SystemExit(main())