Troubleshooting — Pipeline¶
Erreur JSON au lancement du runner¶
Symptôme : ERREUR : JSON invalide ou jq: error (at pipeline.json:N): ...
Cause : syntaxe JSON invalide dans le fichier pipeline.
Diagnostic :
jq affiche l'erreur avec le numéro de ligne exact.
Erreurs fréquentes :
// Virgule après le dernier élément d'un tableau — invalide en JSON
{
"pipeline": [
{ "type": "compute", ... }, ← virgule en trop
]
}
// Clé sans guillemets — invalide en JSON
{
"pipeline": [
{ type: "compute" } ← clé non quotée
]
}
// Accolade ou crochet non fermé
{
"pipeline": [
{ "type": "compute", "params": { ... }
]
// } manquant
Champ op non reconnu / opération inconnue¶
Symptôme : ERREUR : opération inconnue : compute ou similaire.
Cause : deux formats de pipeline coexistent.
- Format legacy (pipeline.json) : champ op
- Format étendu (recommandé) : champ type
runner.sh détecte automatiquement le format, mais les deux ne doivent pas être
mélangés dans un même fichier.
Diagnostic :
Solution : utiliser exclusivement type (format étendu) dans les nouveaux pipelines.
Voir Pipelines JSON pour le schéma complet.
Champ obligatoire manquant¶
Symptôme : ERREUR : Bloc #N : params.input manquant ou vide
Cause : un champ requis est absent ou vide dans le JSON.
Champs requis par opération :
| Opération | Champs obligatoires |
|---|---|
compute |
params.input, params.output_dir, params.filename |
verify |
params.input, params.base |
compare |
params.base_a, params.base_b |
Diagnostic :
Pipeline s'arrête à mi-exécution¶
Comportement attendu : runner.sh fonctionne sous set -euo pipefail.
Toute commande retournant exit non-zéro arrête immédiatement le pipeline.
Ce n'est pas un bug — c'est une protection contre la propagation d'erreurs silencieuses.
Identifier l'étape qui échoue :
# Lancer avec bash -x pour tracer chaque commande
bash -x runner.sh mon-pipeline.json 2>&1 | head -50
La dernière commande affichée avant l'arrêt est la cause.
Causes fréquentes :
- Dossier source introuvable (chemin relatif mal résolu)
- Base
.b3absente pourverifyoucompare b3sumabsent en mode natif- Permissions insuffisantes sur le dossier de sortie
Il n'existe pas de mode --continue-on-error natif. Corriger l'erreur sous-jacente.
Chemins relatifs non résolus¶
Symptôme : ERREUR : Bloc #N compute : dossier source introuvable : ./donnees
malgré un chemin qui semble correct.
Cause : les chemins relatifs dans le JSON sont résolus depuis le répertoire
du script runner.sh, pas depuis le répertoire courant de l'utilisateur.
Exemple : si vous lancez depuis /home/moi/projet mais que runner.sh est dans
/home/moi/hash-tool, ./donnees est résolu comme /home/moi/hash-tool/donnees.
Diagnostic :
Solution : toujours utiliser des chemins absolus dans les pipelines de production :
Pipeline vide ou tableau absent¶
Symptôme : ERREUR : tableau .pipeline vide ou absent
Cause : le fichier JSON ne contient pas la clé pipeline, ou le tableau est vide.
Vérification :
Structure minimale valide :