Files
MobilityOps/.gitea/workflows/ci.yml
T
NuklearRabbit fe92a7f491
MobilityOps acceptance / acceptance (pull_request) Failing after 4m47s
ci: consolidate validation and split lightweight probes
2026-08-29 06:59:02 +02:00

91 lines
3.4 KiB
YAML

name: MobilityOps acceptance
on:
push:
branches: [master]
pull_request:
concurrency:
group: mobilityops-ci-${{ gitea.repository }}-${{ gitea.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
acceptance:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
fetch-depth: 0
- name: Secret scan
uses: trufflesecurity/trufflehog@b9dd330365132cd2d01dd5dc8a857a056a2544e1 # v3.79.0
with:
path: ./
extra_args: --only-verified
- name: Backend tests in isolated PostgreSQL stack
run: sh scripts/run-isolated-tests.sh
- name: Backend static and contract checks
run: |
docker compose -p mobilityops-ci -f compose.yaml -f compose.test.yaml run --build --rm api ruff check app tests
docker compose -p mobilityops-ci -f compose.yaml -f compose.test.yaml run --rm api mypy app
docker compose -p mobilityops-ci -f compose.yaml -f compose.test.yaml run --rm \
-v "$PWD:/repo:ro" api python /repo/scripts/check-contracts.py
python scripts/check-source-budgets.py
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 22
cache: npm
cache-dependency-path: frontend/package-lock.json
- name: Install frontend dependencies once
working-directory: frontend
run: npm ci --no-audit --no-fund
- name: Frontend lint, build, budget and dependency audit
working-directory: frontend
run: |
npm run lint
npm run build
npm run budget
npm audit --audit-level=high
- name: Start the demo stack
run: |
cp .env.example .env
docker compose -p mobilityops-e2e up --build -d db api web
for _attempt in $(seq 1 60); do
if curl -fsS http://localhost:1228/health/ready >/dev/null 2>&1; then break; fi
sleep 2
done
curl -fsS http://localhost:1228/health/ready
docker compose -p mobilityops-e2e exec -T api python -m app.cli seed --reset
- name: Install acceptance browsers
working-directory: frontend
run: npx playwright install --with-deps chromium firefox
- name: Run browser acceptance and live smoke suites
working-directory: frontend
env:
MOBILITYOPS_PUBLIC_URL: http://localhost:1228
run: |
npx playwright test
npx playwright test --config=playwright.live.config.ts
- name: Run concurrent persisted-read smoke
run: python scripts/run-readonly-load-smoke.py --base-url http://localhost:1228
- name: Upload Playwright report
if: failure()
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3; Gitea-compatible artifact protocol
with:
name: playwright-report
path: |
frontend/playwright-report
frontend/playwright-live-report
if-no-files-found: ignore
- name: Stack logs on failure
if: failure()
run: docker compose -p mobilityops-e2e logs --tail=200 api web
- name: Remove CI stacks
if: always()
run: |
docker compose -p mobilityops-e2e down -v --remove-orphans
docker compose -p mobilityops-ci -f compose.yaml -f compose.test.yaml down -v --remove-orphans