La chaîne complète : intégration continue, tests automatisés, connexion au serveur Ubuntu, puis les deux façons de déployer — à la main ou avec Docker.
Je code, je lance mes tests en local, puis je publie mon travail.
Le push déclenche automatiquement le pipeline. Rien n'est manuel à partir d'ici.
Un serveur neuf démarre, récupère le code et rejoue tout dans l'ordre. Si une seule étape échoue, la suite est annulée.
Dépendances figées : npm ci, composer install.
Lint + formatage : le style du code est vérifié par la machine.
Unitaires → intégration → bout en bout. Le cœur de la CI.
Production d'un artefact : dossier dist/ ou image Docker.
Un test échoue → pipeline rouge, fusion bloquée. Je corrige et je re-push. Rien ne part en production.
Tout est vert → on passe au CD : la livraison, puis le déploiement sur le serveur.
Le VPS est un ordinateur Ubuntu allumé en permanence, sans écran. On lui parle par SSH, avec une paire de clés — jamais un mot de passe.
ssh-keygen -t ed25519~/.ssh/authorized_keys du serveurMême artefact, même serveur : seule la méthode de mise en ligne change.
Le serveur héberge le code source et les outils. On répète les commandes à chaque livraison.
ssh eleve@vpscd /var/www/app && git pullnpm ci && npm run buildsudo systemctl restart appLa CI fabrique une image : le code + ses dépendances + sa version de Node, scellés ensemble. Le serveur ne fait que la lancer.
docker build -t app:v12 . (dans la CI)docker push ghcr.io/…/app:v12ssh + docker compose pulldocker compose up -dv11Reçoit les visiteurs en 443 et transmet à l'application.
Service systemd (chemin A) ou conteneur Docker (chemin B).
Les données survivent au déploiement : volume ou service à part.
Journaux, sauvegardes, pare-feu ufw.
| Critère | Déploiement à la main | Déploiement avec Docker |
|---|---|---|
| Ce qui voyage | le code source | une image complète et scellée |
| Installé sur le VPS | Node, PHP, outils de build… | Docker, et c'est tout |
| Reproductibilité | dépend du serveur | identique partout |
| Interruption de service | probable pendant le build | très courte, à la bascule |
| Retour arrière | manuel et risqué | relancer le tag précédent |
| À apprendre | SSH et Linux | SSH, Linux, Dockerfile, Compose |
| Bon pour | un petit projet, une démo | tout projet à plusieurs, ou durable |