ci: add minimal CI gate (pre-push hook + ci_gate.py + dormant Gitea workflow) [v2026.07.18.5]
CI / gate (push) Has been cancelled

This commit is contained in:
QihuAI Design committed 2026-07-19 00:01:07 +08:00
1 parent dd10245ad5
commit 4167e23e50
4 files changed
+197 -8

No files matched your search

+42
View File
@@ -0,0 +1,42 @@
#!/usr/bin/env bash
# qihuaiflow minimal CI gate - git pre-push hook.
#
# Runs backend pytest + frontend vitest INSIDE the long-lived qihu-aiflow
# container before any `git push` leaves this host. If a suite fails the
# push is blocked (exit non-zero), so a broken tree can never be published.
#
# Install (on the deploy host, inside the repo):
# cp scripts/git-hooks/pre-push .git/hooks/pre-push
# chmod +x .git/hooks/pre-push
#
# This is a self-contained bash gate (no python dependency on the host).
# The canonical, documented version lives in scripts/ci_gate.py.
set -uo pipefail
CONTAINER="qihu-aiflow"
if ! docker ps --format '{{.Names}}' | grep -qx "$CONTAINER"; then
echo "[CI Gate] ERROR: container $CONTAINER is not running - aborting push" >&2
exit 2
fi
echo "=== [CI Gate] backend pytest ==="
docker exec "$CONTAINER" bash -c 'cd /app/backend/python && .venv/bin/python -m pytest -c pytest.ini -q'
backend_rc=$?
if [ "$backend_rc" -ne 0 ]; then
echo "[CI Gate] backend pytest FAILED (rc=$backend_rc) - push blocked" >&2
exit 1
fi
echo "[CI Gate] backend pytest OK"
echo "=== [CI Gate] frontend vitest ==="
docker exec "$CONTAINER" bash -c 'cd /app/frontend && npx vitest run --reporter=dot'
frontend_rc=$?
if [ "$frontend_rc" -ne 0 ]; then
echo "[CI Gate] frontend vitest FAILED (rc=$frontend_rc) - push blocked" >&2
exit 1
fi
echo "[CI Gate] frontend vitest OK"
echo "[CI Gate] PASSED - all suites green - push allowed"
exit 0