« Le workflow est vert, donc le projet fonctionne. »
La CI prouve seulement les commandes exécutées dans l’environnement déclaré. Le périmètre non testé doit rester explicite.
01Commence par un contrat local
#!/usr/bin/env bash
set -eu
file="${1:-platform.conf}"
test -f "$file"
grep -Fxq 'environment=staging' "$file"
grep -Fxq 'backup_check=enabled' "$file"
printf 'validation passed\n'
Le script retourne zéro lorsque toutes les assertions passent et un code non nul dès qu’une assertion échoue. Il devient l’unique contrat appelé localement et par la CI.
02Exécute avant de pousser
bash -n ci/check.sh
bash ci/check.sh platform.conf
echo "$?"
Une commande reproductible raccourcit le diagnostic : le développeur peut observer le même échec sans attendre un runner distant.
03Déclare le workflow
name: repository-validation
on:
push:
pull_request:
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate platform configuration
run: bash ci/check.sh platform.conf
Le nom du workflow, du job et des steps doit rester lisible. Une règle de branche dépend souvent du nom stable du check produit.
04Lis l’échec de l’extérieur vers l’intérieur
Workflow
└── Job validate
└── Step Validate platform configuration
└── bash ci/check.sh platform.conf
├── commande fautive
├── stdout / stderr
└── exit code
gh pr checks
gh run list --branch feature/broken-backup-check
gh run view <run-id>
gh run view <run-id> --log-failed
05Reproduis le SHA exact
git fetch origin
git switch --detach <sha-du-check>
bash ci/check.sh platform.conf
Tester une branche qui a déjà reçu une correction ne reproduit pas l’échec observé sur un ancien SHA.
06Distingue les familles d’échec
07Corrige la cause
printf 'environment=staging\nbackup_check=enabled\n' \
> platform.conf
bash ci/check.sh platform.conf
git add platform.conf
git commit -m "fix: restore valid backup configuration"
git push
Ne remplace pas une assertion utile par || true pour obtenir du vert. Si le contrat est incorrect, modifie-le avec une justification et un test de remplacement.
08Conserve la preuve utile
- SHA testé ;
- runner et versions ;
- commande exacte ;
- code retour ;
- sortie pertinente ;
- cause ;
- commit correctif ;
- nouvelle exécution.
09Relie la CI aux règles de fusion
Un required status check empêche la fusion tant que le contexte attendu n’est pas réussi. Vérifie que le nom requis correspond bien au workflow actuel et qu’aucun check ambigu ne peut le remplacer.
Diagnostique l’échec volontaire
Exécute le scénario CI du lab. Remets le code retour non nul, l’assertion en échec, le commit correctif et la preuve du second passage réussi.
✓À retenir
Une CI utile exécute un contrat local clair, sur un SHA identifié. Le diagnostic relie étape, commande, sortie et code retour avant de produire une correction vérifiable.