Automatiser sa Checklist de Release avec n8n et GitHub Actions (Guide 2026)
La fuite de Claude Code aurait pu être évitée avec une simple automatisation. Voici comment construire un pipeline de release sécurisé qui scanne vos bundles, détecte les fichiers sensibles et bloque les publications dangereuses — avec n8n et GitHub Actions.

William Aklamavo
31 mars 2026
Automatiser sa Checklist de Release avec n8n et GitHub Actions
La fuite du code source de Claude Code (31 mars 2026) avait une cause simple : un fichier .map oublié dans le bundle de production. Une automatisation basique l'aurait détecté.
Voici comment construire ce système.
Le problème des releases manuelles
Chaque équipe a une checklist de release. La plupart du temps, elle est dans la tête du dev principal, ou dans un doc Notion que personne ne lit.
Résultat : les oublis se produisent au pire moment — juste avant le push en production.
Architecture du pipeline
Code push → GitHub Actions → Scan sécurité → Build → Validation bundle → Publish
↓ ↓
Alerte Slack Blocage si .map détecté
1. GitHub Action : Scan pré-publish
Créez .github/workflows/pre-publish-check.yml :
name: Pre-publish Security Scan
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
security-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Scan for source maps in dist
run: |
if find dist -name "*.map" | grep -q .; then
echo "❌ Source maps trouvées dans dist/ — publication bloquée"
find dist -name "*.map"
exit 1
fi
echo "✅ Aucun fichier .map dans le bundle de production"
- name: Scan for sensitive files
run: |
PATTERNS=(".env" "*.key" "*.pem" "secrets" "credentials")
for pattern in "${PATTERNS[@]}"; do
if find dist -name "$pattern" | grep -q .; then
echo "❌ Fichier sensible détecté : $pattern"
exit 1
fi
done
echo "✅ Aucun fichier sensible détecté"
- name: Check bundle size
run: |
SIZE=$(du -sh dist | cut -f1)
echo "📦 Taille du bundle : $SIZE"
# Alerte si > 50 Mo (signe potentiel d'inclusion accidentelle)
SIZE_MB=$(du -sm dist | cut -f1)
if [ $SIZE_MB -gt 50 ]; then
echo "⚠️ Bundle anormalement large : ${SIZE_MB} Mo — vérification manuelle requise"
exit 1
fi
2. Hook n8n : Notification en cas de blocage
Quand la GitHub Action échoue, vous voulez une alerte immédiate — pas un email perdu dans votre inbox.
Workflow n8n github-action-failure-alert :
Webhook GitHub (workflow_run failed)
→ Extract data (repo, branch, error message)
→ Slack notification #alerts-devops
→ Créer ticket Notion "Action requise"
→ Email au tech lead
Configuration du webhook GitHub :
- Repo → Settings → Webhooks → Add webhook
- Payload URL :
https://votre-n8n.com/webhook/github-actions - Content type :
application/json - Events :
Workflow runs
3. .npmignore : La dernière ligne de défense
Même avec tous les checks, votre .npmignore doit être explicite :
# .npmignore
**/*.map
**/*.map.js
.env*
*.key
*.pem
test/
tests/
__tests__/
*.test.ts
*.spec.ts
.github/
scripts/
docs/
CHANGELOG.md
4. pre-publish hook dans package.json
{
"scripts": {
"prepublishOnly": "npm run build && npm run security-check",
"security-check": "node scripts/check-bundle.js"
}
}
scripts/check-bundle.js :
const fs = require('fs');
const path = require('path');
function scanDir(dir, patterns) {
const files = fs.readdirSync(dir, { recursive: true });
const dangerous = files.filter(f => patterns.some(p => f.endsWith(p)));
if (dangerous.length > 0) {
console.error('❌ Fichiers dangereux dans le bundle :');
dangerous.forEach(f => console.error(' -', f));
process.exit(1);
}
console.log('✅ Bundle propre — aucun fichier sensible');
}
scanDir('./dist', ['.map', '.env', '.key', '.pem']);
Résultat
Avec ce pipeline :
- Chaque push est scanné automatiquement
- Les fichiers .map en production sont détectés et bloquent la publication
- L'équipe est alertée instantanément via Slack
- Le bundle est audité à chaque release
Le tout en ~2h de setup. C'est le type d'automatisation qui coûte peu à mettre en place et évite des catastrophes comme celle d'Anthropic.
Vous voulez qu'on construise ce pipeline pour votre projet ?
