Terminé
Scolaire

Plateforme CI/CD Multi-Langages avec Déploiement Automatisé

2025
DevOps
Plateforme CI/CD Multi-Langages avec Déploiement Automatisé

À propos du projet

Plateforme CI/CD Multi-Langages avec Déploiement Automatisé

Ce projet représente la création d'une infrastructure DevOps complète permettant aux développeurs de déployer automatiquement leurs applications en production, simplement en poussant leur code sur Git.

Le défi :

Dans une équipe de développement, le processus de déploiement d'une application peut prendre des heures : compilation manuelle, création d'images Docker, configuration des serveurs, déploiement sur le cluster... Un processus long, répétitif et source d'erreurs.

Ma solution :

J'ai créé une plateforme intelligente qui détecte automatiquement le langage de programmation utilisé (C, Java, JavaScript, Python, Befunge) et effectue l'ensemble du processus de déploiement automatiquement.

  • Zéro configuration manuelle : push du code et déploiement automatique en quelques minutes
  • Support multi-langages : une seule plateforme pour tous les projets de l'entreprise
  • Scalabilité automatique : l'application se réplique selon les besoins définis
  • Gain de temps massif : de plusieurs heures à quelques minutes pour un déploiement

L'infrastructure analyse le code, le compile si nécessaire, crée une image Docker optimisée, la stocke dans un registre privé, puis déploie l'application sur un cluster Kubernetes avec haute disponibilité. Tout cela sans intervention humaine.

Résultat : Les développeurs se concentrent sur le code, pas sur le déploiement. La productivité de l'équipe augmente drastiquement.

Technologies & Outils

Kubernetes
Jenkins
Docker

Détails Techniques

Plateforme CI/CD Multi-Langages avec Déploiement Automatisé (Whanos)

Contexte technique :

Conception et déploiement d'une infrastructure DevOps complète combinant CI/CD, conteneurisation et orchestration pour automatiser le cycle de vie d'applications multi-langages, du commit Git au déploiement en production sur cluster Kubernetes.

Pipeline d'automatisation :

  • Détection intelligente : Analyse automatique du repository (Makefile, pom.xml, package.json, requirements.txt, *.bf)
  • Build multi-stage : Images Docker optimisées avec compilation et suppression des artefacts inutiles
  • Registry privé : Stockage sécurisé des images avec versioning
  • Déploiement conditionnel : Parsing du fichier whanos.yml pour orchestration Kubernetes

Stack technique complète :

  • Conteneurisation : Docker (images multi-stage, base images + standalone images)
  • CI/CD : Jenkins (freestyle jobs, parametrized builds, polling SCM, triggers)
  • Orchestration : Kubernetes cluster multi-nodes (Deployments, Services, Resources, Replicas)
  • IaC : Ansible avec Kubespray pour provisionning du cluster
  • Registry : Docker Registry privé pour stockage d'images

Langages supportés :

  • C : GCC 13.2, compilation Make, détection via Makefile
  • Java : Java SE 21, Maven, packaging JAR
  • JavaScript : Node.js 20.9, npm, exécution native
  • Python : 3.12, pip, module execution
  • Befunge : Befunge-93 (langage ésotérique)

Architecture Jenkins :

  • Job link-project : création dynamique de pipelines par repository
  • Jobs de build d'images de base par langage
  • Polling SCM automatique (vérification minutée des changements Git)
  • Support des repositories privés avec credentials

Fonctionnalités Kubernetes :

  • Configuration déclarative via whanos.yml (replicas, resources, ports)
  • Exposition des services vers l'extérieur
  • Cluster multi-nodes (minimum 2 nodes) pour haute disponibilité
  • Gestion des ressources (CPU, RAM) par application

Points techniques notables :

  • Images Docker optimisées multi-stage pour réduire la taille finale
  • Séparation base images / standalone images pour flexibilité
  • Idempotence des playbooks Ansible pour redeployabilité
  • Infrastructure as Code pour déploiement reproductible
  • Système de détection automatique du langage par analyse du repository

Ce projet démontre une maîtrise avancée de l'écosystème DevOps moderne et la capacité à concevoir des systèmes d'automatisation complexes et scalables.