cc3e5aef0e
Livrable Sprint 2 (roadmap §S2 l.38 « RBAC 50 rôles configuration », GAP_ANALYSIS §3.4). Seul deliverable S2 100% autorable en-repo — les clones Frontend/CRM dépendent des layouts LIVE (VPS). - rbac/rbac.schema.json — contrat JSON-Schema draft-07 (sous-ensemble validateur maison, zéro pip) : 50 rôles, DocPerm par DocType, scope User Permission. - rbac/rbac_50_roles.json — 50 rôles × 5 portails métier + console plateforme, mappés aux entités CLAUDE.md, ciblant des DocTypes ERPNext v15 natifs. - rbac/RBAC_50_ROLES_SPEC.md — design RBAC 3 niveaux + séparation des pouvoirs + procédure d'application VPS (fixtures bench, hors périmètre worker). - rbac/tests/test_rbac.py — 10 tests unittest (réutilise le validateur Publiciste, pas de doublon) : 50 rôles exacts, unicité, 5 portails, anti- élévation de privilège. Oracle jsonschema si présent. - ci.yml — job rbac-tests ajouté au gate (Gitea Actions uniquement). - GAP_ANALYSIS §3.4 + daily report 2026-07-30 (session 4) mis à jour. Anti-invention #6 : aucun plafond monétaire inventé ; DocTypes non natifs marqués custom → à confirmer VPS. Gate local vert (guard/json/docs + 10 tests RBAC + 23 tests Publiciste régression). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
114 lines
4.0 KiB
YAML
114 lines
4.0 KiB
YAML
# ============================================================================
|
|
# CI · OTO Enterprise OS DTP · Gitea Actions
|
|
# ----------------------------------------------------------------------------
|
|
# Gate qualité DevOps (roadmap Sprint 1 · GAP_ANALYSIS §7).
|
|
# Plateforme : Gitea Actions UNIQUEMENT (CLAUDE.md #2 · JAMAIS GitHub).
|
|
# Runner : act_runner enregistré sur le VPS avec le label « ubuntu-latest ».
|
|
# Voir ci/README.md pour l'enregistrement du runner.
|
|
# Aucune dépendance réseau/marketplace externe hors actions/checkout.
|
|
# ============================================================================
|
|
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
branches: [main]
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
constraints-guard:
|
|
name: Contraintes NON-NÉGOCIABLES (CLAUDE.md)
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Guard des contraintes
|
|
run: bash ci/guard_constraints.sh
|
|
|
|
validate-json:
|
|
name: Validation JSON (schémas Faisabilité)
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Valider les JSON
|
|
run: bash ci/validate_json.sh
|
|
|
|
check-docs:
|
|
name: Qualité documentaire (liens + 4Big)
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Contrôle docs
|
|
run: bash ci/check_docs.sh
|
|
|
|
# --------------------------------------------------------------------------
|
|
# Publiciste (Sprint 2) : parser faisabilité → projets_master.json + generator.
|
|
# Tests unitaires stdlib pur (unittest) → aucune installation pip requise sur
|
|
# le runner. L'oracle jsonschema est utilisé s'il est présent, sinon ignoré.
|
|
# --------------------------------------------------------------------------
|
|
publiciste-tests:
|
|
name: Publiciste · parser + schéma + generator (unittest)
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: 05_deliverables_mvp/publiciste
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Tests unitaires Publiciste
|
|
run: python3 -m unittest discover -s tests -v
|
|
|
|
# --------------------------------------------------------------------------
|
|
# RBAC 50 rôles (Sprint 2 · ERPNext Backend) : contrat rbac_50_roles.json vs
|
|
# rbac.schema.json. Réutilise le validateur maison Publiciste (pas de pip).
|
|
# --------------------------------------------------------------------------
|
|
rbac-tests:
|
|
name: RBAC · 50 rôles + schéma (unittest)
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: 05_deliverables_mvp/rbac
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Tests contrat RBAC
|
|
run: python3 -m unittest discover -s tests -v
|
|
|
|
gate:
|
|
name: Gate qualité (agrégat)
|
|
runs-on: ubuntu-latest
|
|
needs: [constraints-guard, validate-json, check-docs, publiciste-tests, rbac-tests]
|
|
steps:
|
|
- name: Résultat
|
|
run: echo "✅ Gate qualité 4Big franchi — tous les checks verts."
|
|
|
|
# --------------------------------------------------------------------------
|
|
# E2E baseline (QA · Sprint 1). MANUEL uniquement (workflow_dispatch) : exige
|
|
# un serveur live + navigateurs → hors du gate push/PR (checks statiques).
|
|
# Cible via DTP_BASE_URL (variable/secret repo). Voir tests/README.md.
|
|
# --------------------------------------------------------------------------
|
|
e2e-baseline:
|
|
name: E2E baseline Playwright (manuel)
|
|
runs-on: ubuntu-latest
|
|
if: github.event_name == 'workflow_dispatch'
|
|
defaults:
|
|
run:
|
|
working-directory: tests
|
|
env:
|
|
CI: "true"
|
|
DTP_BASE_URL: ${{ vars.DTP_BASE_URL }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Installer dépendances + navigateurs
|
|
run: |
|
|
npm install
|
|
npm run install:browsers
|
|
- name: Lancer la baseline E2E
|
|
run: npm test
|
|
- name: Publier le rapport
|
|
if: always()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: playwright-report
|
|
path: tests/playwright-report/
|