Configuration du quality gate
Le quality gate est la règle qui décide si un run CI bloque un merge. Il vit sur l'agent, s'édite dans l'UI (Agent → CI / CD → Quality Gate) et est réutilisé par tous les providers CI.
Champs
| Champ | Requis | Défaut | Description |
|---|---|---|---|
| Score global minimum | oui | 0.85 | Le run échoue quand le score global de la scorecard est strictement inférieur (0 à 1). |
| Dimensions bloquantes | non | [] | Liste de clés de dimensions (security, privacy, ...). Chacune doit passer individuellement pour que le gate passe. |
| Critères en échec maximum | non | vide | Cap sur le nombre total de critères en échec dans la scorecard. Laissez vide pour désactiver. |
| Zone de warning | non | vide | Plancher souple sous le minimum global. Quand le score atterrit dans [warning_band, overall_min), le gate passe (exit 0) mais le run est marqué warning. |
Flux de décision
Le backend évalue le gate après la construction de la scorecard :
- Le score global doit atteindre le minimum configuré.
- Chaque dimension bloquante doit passer.
- Les critères en échec doivent rester sous le cap configuré, si un cap existe.
- La zone de warning peut marquer un run en warning sans échouer le job CI.
La réponse du run expose la décision sous results.gate, avec passed, is_warning, les scores et les messages d'échec quand le gate échoue.
Éditer le gate sans toucher au CI
Comme le gate vit sur l'agent (pas dans le repo), vous pouvez le serrer ou le relâcher sans redéployer quoi que ce soit :
- Ouvrez l'agent dans Mankinds.
- CI / CD → Quality Gate.
- Ajustez les valeurs.
- Sauvegarder.
Le prochain run CI prend le nouveau gate automatiquement. Chaque changement est enregistré dans l'historique de versions de config de l'agent.
API
Vous pouvez aussi mettre à jour le gate via l'API :
PATCH /api/v1/agents/{agent_id}/gate
X-API-Key: mk_xxx
Content-Type: application/json
{
"gate": {
"overall_score_min": 0.85,
"dimensions_must_pass": ["security", "privacy"],
"max_failed_criteria": 2,
"warning_band_min": 0.70
}
}
Le payload est mergé dans agent.config["gate"] ; le reste de la config est laissé intact.
Questions fréquentes
Quelles dimensions je peux exiger ?
Exigez seulement les dimensions évaluées par les critères sélectionnés sur l'agent. Si une dimension requise n'a pas de score pour cet agent, le gate ne peut pas passer de manière fiable.
Je peux avoir des gates différents par branche ?
Le gate est par agent. Utilisez des agents séparés si différents environnements ou branches doivent avoir des règles différentes.
Je peux override le gate sur un run CI ponctuel ?
Non. Le snippet CI porte l'UUID de l'agent et la clé API ; le gate reste la source de vérité sur l'agent.
Voir aussi
- Démarrage rapide : mise en place de l'intégration de bout en bout.
- GitHub Actions et GitLab CI : guides spécifiques par provider.