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.
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.
Pourquoi les releases manuelles sont-elles un risque de sécurité critique ?
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. Si vous gérez une infrastructure cloud, notre analyse de la panne Cloudflare du 18 novembre 2025 montre pourquoi la résilience ne s'improvise pas.
Vous voulez qu'on construise ce pipeline pour votre projet ?
Étiquettes

William Aklamavo
Expert en développement web et automatisation, passionné par l'innovation technologique et l'entrepreneuriat digital.
