Cours DevOps — fiche de synthèse

Du code de l'élève au site en ligne

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.

Étape 1 — poste de l'élève

J'écris du code

Je code, je lance mes tests en local, puis je publie mon travail.

git add . git commit -m "feat: page contact" git push origin ma-branche
Étape 2 — le dépôt distant

GitHub / GitLab

Le push déclenche automatiquement le pipeline. Rien n'est manuel à partir d'ici.

Pull request Revue de code Déclencheur : on push

Étape 3 — CI : intégration continue

exécutée sur un runner, pas sur ta machine

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.

1 Installation

Dépendances figées : npm ci, composer install.

2 Qualité

Lint + formatage : le style du code est vérifié par la machine.

3 Tests

Unitaires → intégration → bout en bout. Le cœur de la CI.

4 Build

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.

Étape 4 — la porte d'entrée

Se connecter au VPS Ubuntu en SSH

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.

  1. Je génère mes clés : ssh-keygen -t ed25519
  2. Je copie la clé publique dans ~/.ssh/authorized_keys du serveur
  3. La clé privée ne quitte jamais ma machine — sur GitHub elle est stockée en secret chiffré
# depuis mon poste ou depuis le pipeline ssh eleve@203.0.113.42 # une fois dedans sudo ufw status # pare-feu : 22, 80, 443 sudo systemctl status nginx sudo certbot --nginx # HTTPS

Étape 5 — CD : deux chemins pour le même code

Même artefact, même serveur : seule la méthode de mise en ligne change.

Chemin A

À la main

Le serveur héberge le code source et les outils. On répète les commandes à chaque livraison.

1. ssh eleve@vps
2. cd /var/www/app && git pull
3. npm ci && npm run build
4. migrations de base de données
5. sudo systemctl restart app
Les pièges
  • « ça marchait sur mon PC » : Node/PHP pas à la même version
  • le site est cassé pendant le build
  • revenir en arrière = refaire tout à l'envers
Chemin B

Avec Docker

La CI fabrique une image : le code + ses dépendances + sa version de Node, scellés ensemble. Le serveur ne fait que la lancer.

1. docker build -t app:v12 . (dans la CI)
2. docker push ghcr.io/…/app:v12
3. ssh + docker compose pull
4. docker compose up -d
5. l'ancien conteneur s'arrête, le nouveau prend la main
Les gains
  • identique en local, en test et en production
  • retour arrière immédiat : relancer le tag v11
  • le VPS n'a besoin que de Docker

Le VPS Ubuntu, une fois déployé

203.0.113.42 — Ubuntu 24.04 LTS
Nginx

Reçoit les visiteurs en 443 et transmet à l'application.

L'application

Service systemd (chemin A) ou conteneur Docker (chemin B).

Base de données

Les données survivent au déploiement : volume ou service à part.

Surveillance

Journaux, sauvegardes, pare-feu ufw.

À la main ou avec Docker ?

Critère Déploiement à la main Déploiement avec Docker
Ce qui voyagele code sourceune image complète et scellée
Installé sur le VPSNode, PHP, outils de build…Docker, et c'est tout
Reproductibilitédépend du serveuridentique partout
Interruption de serviceprobable pendant le buildtrès courte, à la bascule
Retour arrièremanuel et risquérelancer le tag précédent
À apprendreSSH et LinuxSSH, Linux, Dockerfile, Compose
Bon pourun petit projet, une démotout projet à plusieurs, ou durable

Le vocabulaire à retenir

CIIntégration continue : à chaque push, la machine vérifie le code.
CDLivraison/déploiement continu : la mise en ligne devient automatique.
RunnerLa machine jetable qui exécute le pipeline.
ArtefactLe résultat du build, prêt à être déployé.
Image / conteneurLe modèle figé, et l'exemplaire qui tourne.
RegistryL'entrepôt d'images (Docker Hub, GHCR).
SecretUne valeur sensible chiffrée, jamais dans le dépôt.
RollbackRevenir à la version précédente.
VPSUn serveur Linux loué, accessible en SSH.