Skip to content

Hook pre-commit : barriere effective (actionlint + gitleaks)#6

Merged
astronas merged 1 commit into
stagingfrom
fix/pre-commit-barrier
Jul 7, 2026
Merged

Hook pre-commit : barriere effective (actionlint + gitleaks)#6
astronas merged 1 commit into
stagingfrom
fix/pre-commit-barrier

Conversation

@astronas

@astronas astronas commented Jul 7, 2026

Copy link
Copy Markdown
Collaborator

Problème

Le hook scripts/pre-commit.sh utilisait set -uo pipefail sans -e. Comme
actionlint et gitleaks ne reposent que sur leur code de sortie, un échec était
ignoré : le hook affichait « OK » et sortait en 0. Seul le contrôle de structure
(.env/.pem/.key, avec exit 1) bloquait réellement. La barrière Shift-Left exigée
par le sujet (« valider séquentiellement actionlint + gitleaks ») était donc incomplète.

Correctif

  • actionlint : enveloppé dans if ! …; then message rouge; exit 1; fi.
  • gitleaks : capture du code retour (|| gitleaks_status=$?) sur les trois branches
    (detect --staged, protect --staged, fallback stdin), le fallback passe en
    process substitution pour ne pas perdre le code retour dans un sous-shell → exit 1
    si un secret est trouvé.
  • Message du contrôle de structure remis avec ses accents (texte exact du sujet :
    « Sécurité : … Opération annulée. »).

Tests locaux (tous conformes)

Scénario Résultat
Aucun fichier staged exit 0
Fichier .key staged exit 1 + message accentué ✅
Secret SECWALLET_… staged gitleaks détecte + exit 1
Workflow invalide actionlint échoue + exit 1

Le hook utilisait `set -uo pipefail` sans `-e` : un echec actionlint ou
gitleaks n'interrompait pas le script (il affichait "OK" et sortait en 0).
Seul le controle de structure bloquait vraiment.

- actionlint : echec -> message rouge + exit 1.
- gitleaks : capture du code retour sur les trois branches (detect/protect/
  stdin, fallback via process substitution) -> message rouge + exit 1 si secret.
- Message du controle de structure remis avec ses accents (texte exact du sujet).

Barriere Shift-Left desormais effective sur les trois controles (verifie en local).
@astronas astronas merged commit 1b80475 into staging Jul 7, 2026
9 checks passed
@astronas astronas deleted the fix/pre-commit-barrier branch July 8, 2026 11:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant