CI/CD maison : buffet à volonté, food-truck gourmet… ou cuisine 3 étoiles ?
Chez OBI Partner, on adore coder Python et PHP. Mais soyons honnêtes : le moment où tout part en prod, c’est souvent plus proche d’un sketch de Kaamelott que d’une recette de cuisine bien huilée.
Entre les serveurs qui fument, les bases de données qui pleurent et les devs qui jurent “mais chez moi ça marche”… il fallait trouver une meilleure méthode.
C’est là qu’entre en scène le CI/CD auto-hébergé. Pas de SaaS américain indiscret, pas de dépendance à un nuage capricieux : tout tourne chez toi, dans ton infra.
Et bonne nouvelle : j’ai cuisiné pour toi plusieurs recettes 🔥.
🥘 Option A : GitLab CE (le buffet à volonté)
GitLab, c’est le buffet chinois du DevOps : tu y trouves tout. Forge, issues, merge requests, pipelines, registry Docker, monitoring… il ne manque que les rouleaux de printemps.
Pourquoi l’aimer
All-in-one : une seule interface, tu n’as pas besoin de courir après 10 outils différents.
Pipeline puissant : GitLab Runner sait tout faire (Docker, Kubernetes, SSH).
Registry intégré : plus besoin de bricoler pour stocker tes images.
Écosystème énorme : si tu demandes de l’aide sur GitLab, tu n’es jamais seul.
Pourquoi souffrir avec
Consommation RAM : GitLab est un ogre. Si tu n’as pas 16 Go à lui donner, il te regardera comme si tu essayais de le nourrir avec une salade verte.
Monolithique : tu prends tout le package, même si tu n’utilises pas la moitié.
docker-compose GitLab CE
(Petit conseil : mets-le sur un serveur dédié, sinon il va étrangler tes autres services comme un boa affamé.)
🌮 Option B : Gitea + Woodpecker + Harbor (le food-truck gourmet)
Si GitLab est le buffet, Gitea + Woodpecker + Harbor c’est le food-truck gourmet. Chaque outil est léger, rapide, et tu choisis exactement ce que tu mets dans ton assiette.
Pourquoi l’aimer
Ultra léger : Gitea démarre plus vite qu’un micro-ondes.
Modulaire : tu prends juste ce dont tu as besoin.
Woodpecker CI : pipelines lisibles, faciles à maintenir.
Harbor : registry avec scanner intégré (ton garde du corps numérique).
Pourquoi souffrir avec
Plus de plomberie : il faut relier les briques toi-même.
Moins d’outils intégrés : pas de gestion de projets hyper avancée comme GitLab.
docker-compose Gitea + Woodpecker + Harbor
👨🍳 Recette bonus : Pipelines CI/CD Python + PHP
👉 Ici, le but est simple : vérifier ton code (lint), le tester (unit tests), puis le déployer.
GitLab CI
Woodpecker CI
🍱 Dockerfiles multi-stage
Laravel (PHP)
FastAPI (Python)
🚚 Déploiement automatisé avec Ansible (zéro downtime)
Playbook
👉 Et pour éviter tout arrêt : lance deux containers en parallèle (app_v1 et app_v2) et fais tourner le trafic via Traefik en rolling update.
🔒 Air-Gapped Mode (le vase clos)
Certaines boîtes veulent du CI/CD en vase clos : pas de connexion Internet, pas de dépendances qui partent aux USA, tout reste derrière tes murs.
Ça sonne un peu comme la série Dark, mais ça marche.
Les ingrédients secrets
Nexus OSS : pour héberger PyPI, Composer, npm, Docker Hub en mode miroir.
Harbor : pour stocker tes images Docker en interne.
Runner : exécute tout avec des images internes, jamais depuis Docker Hub.
Ansible : pour déployer dans ton cluster ou tes VMs sans jamais appeler l’extérieur.
docker-compose Nexus
(Pro-tip : configure Nexus en mode proxy → il va télécharger les libs une fois, puis les servir en interne comme un bon fromager affineur 🧀).
🎩 Déploiement façon chef étoilé : Deployer PHP pour Laravel
Parce que parfois, tu n’as pas envie de t’embêter avec Docker Compose, Ansible ou Kubernetes.
Tu veux juste que ton code Laravel parte sur ton serveur vite, bien, et avec des migrations DB exécutées sans trembler.
C’est là que Deployer PHP entre en scène.
Imagine : un seul fichier deploy.php, un petit dep deploy production, et ton app Laravel est servie sur ton serveur comme une assiette bien dressée par Bocuse 🍽️.
Installation
Ajoute simplement Deployer en dépendance :
Exemple de deploy.php
Ce que ça fait
Clone ton code depuis Git (Gitea, GitLab, ou autre).
Installe tes dépendances Composer.
Lance les optimisations Laravel (
config:cache,route:cache).Déploie ton app dans un dossier versionné (
releases/20250926xxxx).Met à jour le symlink
current→ déploiement instantané sans downtime.Exécute tes migrations DB (
php artisan migrate --force).
Résultat : tu passes d’un serveur où tu fais git pull à la mano (et où tu pries pour que rien ne casse 🙏), à un déploiement carré, traçable et rollbackable.
Intégration CI/CD
Dans ton .gitlab-ci.yml ou .woodpecker.yml, ajoute simplement :
Et voilà : tes devs commitent → pipeline → Deployer → serveur à jour.
Pas de sueur froide, pas de git pull foireux en SSH à 2h du matin.
Conclusion
➡️ GitLab CE = buffet à volonté : tout est inclus, mais prépare-toi à déployer sur un serveur obèse en RAM.
➡️ Gitea + Woodpecker = food-truck gourmet : léger, rapide, savoureux, mais demande un peu plus de cuisine maison.
➡️ Air-Gapped Mode = bunker high-tech : parfait pour les environnements sensibles (industrie, défense, médical).
➡️ Deployer PHP = chef étoilé : déploiement Laravel aussi raffiné qu’un service en gants blancs.
Chez OBI Partner, on dit souvent :
“Peu importe la forge, tant que la prod sort chaude, sans fumée et sans pizza froide.” 🔥
👉 Alors, tu es plutôt buffet géant, food-truck artisanal, cuisine en bunker, ou service à la française avec Deployer PHP ?