Whanos — CI/CD multi-langages
Plateforme CI/CD qui détecte automatiquement le langage d'un repo (C, Java, JS, Python, Befunge), build une image Docker optimisée et déploie sur un cluster Kubernetes — du push Git à la prod, sans intervention humaine.
Contexte
Projet Epitech, équipe de 3 — conception d'une plateforme CI/CD complète où un simple push Git déclenche toute la chaîne jusqu'au déploiement en production sur un cluster Kubernetes multi-nodes, sans une seule étape manuelle.
Problème
Un déploiement à la main, c'est facilement plusieurs heures : compilation, build d'image, push registry, configuration Kubernetes, exposition réseau, vérification… Répétitif, propice aux erreurs, et impossible à paralléliser proprement entre plusieurs équipes ou projets.
Solution
Pipeline Jenkins qui inspecte le repo (Makefile, pom.xml, package.json, requirements.txt, *.bf) pour identifier le langage, construit une image Docker multi-stage adaptée, la pousse dans un registry privé, puis déploie sur Kubernetes selon le fichier whanos.yml du projet (replicas, ressources, ports). Le cluster lui-même est provisionné par Ansible + Kubespray.
Défis techniques
Détection automatique du langage
Pas d'annotation, pas de label : c'est le contenu du repo qui parle. Stratégie déterministe d'analyse des fichiers de build (Makefile, pom.xml, package.json, requirements.txt, *.bf) et fallback contrôlé pour éviter les ambiguïtés.
Orchestrer la chaîne entière
Jenkins (jobs paramétrés, polling SCM, credentials repo privés) ↔ registry privé (versioning, sécurité) ↔ Kubernetes (deployments, services, ressources). Chaque maillon doit échouer proprement et laisser une trace exploitable.
Cluster en Infrastructure as Code
Provisioning du cluster multi-nodes via Ansible + Kubespray, avec idempotence stricte : on doit pouvoir redéployer toute l'infrastructure à zéro et obtenir le même état, sans interaction manuelle.
Apprentissages
- L'IaC, c'est la reproductibilité qui rassure quand le système se casse en pleine nuit.
- Une CI/CD réussie est autant un travail de produit (DX, défauts intelligents, messages d'erreur clairs) qu'un travail d'infra.
- À 3 sur du DevOps, le plus dur n'est pas le code — c'est de s'accorder sur qui détient quelle frontière (cluster, pipeline, registry).