# CI informative. # # Le déploiement reste piloté par le webhook Coolify (push → redeploy), CE # WORKFLOW NE BLOQUE RIEN : il marque simplement le commit vert ou rouge dans # Forgejo. La vraie porte de qualité est le hook `.githooks/pre-push` côté # poste de dev (voir README-CI.md). # # ⚠ Prérequis : un runner Forgejo Actions (act_runner) enregistré sur le VPS. # Sans runner, ce fichier est inerte — aucun job ne démarre et aucun statut # n'apparaît. C'est le cas aujourd'hui : ce workflow est là pour le jour où # un runner sera ajouté. name: CI on: push: branches: [dev, main] pull_request: branches: [dev, main] workflow_dispatch: jobs: javascript: runs-on: docker container: image: node:22-alpine steps: - uses: actions/checkout@v4 - name: Installer les dépendances run: npm ci - name: ESLint run: npm run lint - name: Vérification de types (tsc --checkJs) run: npm run typecheck - name: Tests unitaires + a11y run: npm run test - name: Audit des dépendances run: npm run audit:js continue-on-error: true # informatif : ne doit pas masquer un échec de test python: runs-on: docker container: image: python:3.12-slim steps: - uses: actions/checkout@v4 # requirements-dev.txt, et non une liste recopiée : l'ancienne installait # ruff/pytest/pip-audit seulement. psycopg2, beautifulsoup4, lxml et # hypothesis manquaient, et le job aurait échoué dès la collecte — ce que # personne n'a jamais vu, faute de runner enregistré. - name: Installer l'outillage run: pip install --no-cache-dir -r requirements-dev.txt - name: Ruff (lint + règles de sécurité bandit) run: ruff check . - name: Tests du geocoder run: cd apps/geocoder && python -m pytest tests -q # La suite du crawler n'était pas lancée du tout. - name: Tests du crawler run: cd apps/crawler && python -m pytest tests -q - name: Audit des dépendances run: pip-audit -r apps/crawler/requirements.txt -r apps/geocoder/requirements.txt continue-on-error: true # Les tests de mutation prennent ~1 min : trop lents pour chaque push, mais # utiles en revue. Déclenchement manuel uniquement. mutation: runs-on: docker container: image: node:22-alpine if: github.event_name == 'workflow_dispatch' steps: - uses: actions/checkout@v4 - run: npm ci - run: npm run test:mutation