Scripts CI
Inventaire des scripts CI et utilitaires sous scripts/ et des gates qui les utilisent.
Scripts npm de gates
Section intitulée « Scripts npm de gates »Chaque commande npm run <script> lance un script de vérification. Les commandes critiques sont exécutées en CI sur chaque PR.
| Commande | Script | Rôle |
|---|---|---|
npm run lint | eslint . --ext .ts,.cjs --max-warnings=0 | Lint TypeScript avec frontières d’import (cf. ADR 0001) |
npm run typecheck | tsc -p tsconfig.json --noEmit | Vérification TypeScript stricte |
npm test | vitest run | Tests unitaires (vitest) |
npm run test:ui | npm --prefix adapters/inbound/web/ui run test | Tests React/UI en jsdom |
npm run e2e | playwright test | Tests end-to-end Playwright |
npm run line-count | scripts/check-line-counts.mjs | Gate de taille (refuse les monolithes au-dessus du seuil officiel 700 LoC ; les fichiers historiques >700 sont listés dans l’allowlist du script avec un motif de chantier SPEC-05 — une entrée devient automatiquement « stale » dès que le fichier repasse sous le seuil) |
npm run architecture:check | scripts/check-architecture-boundaries.mjs | Frontières d’import strictes entre core/adapters/composition/addons |
npm run guardian:runtime:check | scripts/check-guardian-runtime-hardcode.mjs | Refuse les règles/prompts longs des guardian packs recopiés dans le runtime source |
npm run public-docs:check | scripts/check-public-docs.mjs | Refuse AGENT-*, AUDITOR-*, DISPATCH-* et autres motifs internes dans docs/ |
npm run docs:links | scripts/check-doc-links.mjs | Vérifie les liens markdown internes (fichier + ancre) |
npm run docs:orphans | scripts/check-doc-orphans.mjs | Refuse les docs publiques non référencées sous docs/ |
npm run docs:bilingual | scripts/check-doc-bilingual.mjs | Vérifie la parité documentaire .md / .fr.md |
npm run license:check | scripts/check-licenses.mjs | Vérifie les licences des dépendances (refuse les copyleft non autorisées) |
npm run sbom:check | cyclonedx-npm | Génère et valide SBOM pour root, UI, cortex-lite |
npm run sbom:release | cyclonedx-npm | Génère les SBOM de release sous sbom/ |
npm run release:tarball:check | scripts/check-release-tarball.mjs | Audite le tarball de release (fichiers attendus, exclusions) |
Scripts shell
Section intitulée « Scripts shell »| Script | Rôle |
|---|---|
scripts/release.sh | Vérifier la section changelog, bumper packages/lockfiles, lancer lint/test, créer le commit release DCO |
scripts/smoke-binary.sh | Smoke test du binaire ./bin/arka-deck |
scripts/init-public-repo.sh | Préparer un dépôt public propre (exclut les fichiers d’atelier privé, AGENTS.md, CLAUDE.md, etc.) |
Workflow CI
Section intitulée « Workflow CI ».github/workflows/ci.yml enchaîne les gates :
- Public files guard — refuse les dossiers privés/locaux d’état agent dans l’index Git
- Public docs guard —
npm run public-docs:check - Docs link check —
npm run docs:links - Docs orphans check —
npm run docs:orphans - Docs bilingual parity —
npm run docs:bilingual - DCO sign-off — vérifie
git commit -ssur chaque commit - Secret scan —
gitleakssur le dépôt - ShellCheck —
shellchecksur les scripts shell - Quality (matrice Node) — lint + tests + tests UI + build + line-count + architecture-check + guardian-runtime-hardcode + typecheck + license-check + sbom-check
.github/workflows/release.yml ajoute :
- Génération des SBOM de release
- Génération tarball
- Audit tarball (
check-release-tarball.mjs) - SHA256
- GitHub Release avec tarball, checksum et SBOM
.github/workflows/scorecard.yml lance OSSF Scorecard chaque lundi pour mesurer la posture supply-chain.
Hooks Git
Section intitulée « Hooks Git ».githooks/ contient un pre-commit qui :
- Lance le lint sur les fichiers stagés
- Vérifie le DCO sign-off
- Refuse les fichiers internes d’atelier privé
Activer les hooks localement :
git config core.hooksPath .githooksVoir aussi
Section intitulée « Voir aussi »- CI/Gates en détail (workflow contributeur) : ../workflow/ci-gates
- Procédure de release : ../workflow/release
- Architecture hexagonale (ADR 0001) : ../../adr/0001-architecture-hexagonale.md