Noah LamontMe contacter
Retour aux projets
2025·DevOps·Projet école — équipe 3, focus pipeline + K8s

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.

KubernetesJenkinsDockerAnsibleLinux
Whanos — CI/CD multi-langages · case study
01

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.

02

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.

03

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.

04

Défis techniques

Défi 1

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.

Défi 2

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.

Défi 3

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.

05

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).