[DTP-Worker 20260802_150601] Sprint 8 · buffer · DevOps outillage : run_ci.sh — miroir LOCAL du gate CI dérivé de gate.needs (zéro liste en dur), reproduit les 30 jobs (7 gates ci/*.sh + 23 suites module) en une commande · anti-dérive par construction (suit ci.yml) · PAS un gate (#5), root ∉ ci/*.sh donc hors INV-B · parseur awk anti-commentaire · chemin d'échec prouvé (EXIT=1 + dump) · doc README + ci/README · 7/7 gates statiques verts
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -26,6 +26,32 @@ et manuellement (`workflow_dispatch`). Jobs statiques (+ une suite `unittest` pa
|
||||
Aucune dépendance réseau/marketplace hors `actions/checkout`. Tout tourne avec
|
||||
`bash` + `git` + `python3` (déjà présents sur un runner standard).
|
||||
|
||||
### Rejouer le gate EN LOCAL — `run_ci.sh` (racine du dépôt)
|
||||
|
||||
Avant de committer, reproduire l'intégralité du gate de merge en une commande :
|
||||
|
||||
```
|
||||
bash run_ci.sh # tout gate.needs (7 gates statiques + 23 suites de module)
|
||||
bash run_ci.sh --static # seulement les 7 gates ci/*.sh (rapide)
|
||||
bash run_ci.sh --list # liste les jobs qui seraient lancés, sans exécuter
|
||||
```
|
||||
|
||||
`run_ci.sh` n'a **aucune liste en dur** : il DÉRIVE l'ensemble des checks depuis
|
||||
`gate.needs` de `.gitea/workflows/ci.yml` (la source de vérité que
|
||||
`check_ci_integrity.sh` verrouille déjà) et exécute, pour chaque job, la
|
||||
commande `run:` déclarée dans son `working-directory:`. Ajouter/retirer un gate
|
||||
dans ci.yml se répercute donc **automatiquement**, sans éditer le lanceur — ce
|
||||
qui élimine la dérive silencieuse des boucles `for g in … ; do bash ci/$g.sh`
|
||||
écrites à la main de session en session. Par construction il ne balaie que
|
||||
`gate.needs`, ce qui **exclut** les jobs manuels `workflow_dispatch`
|
||||
(ex. `e2e-baseline`/`npm test`) et le job `gate` lui-même. Code de sortie 0 ssi
|
||||
tous les jobs passent (même sémantique que le gate).
|
||||
|
||||
Ce n'est **pas un gate** (aucun nouveau `ci/*.sh`, aucune nouvelle assertion) :
|
||||
c'est un lanceur de commodité, hors du glob `ci/*.sh` (donc hors périmètre
|
||||
[INV-B] de `check_ci_integrity`). Son exactitude est **structurelle** (il exécute
|
||||
ce que ci.yml déclare) et n'a pas à être re-gatée (CLAUDE.md #5).
|
||||
|
||||
## 2. Détail des contrôles
|
||||
|
||||
### `guard_constraints.sh` — contraintes NON-NÉGOCIABLES
|
||||
|
||||
Reference in New Issue
Block a user