⚠️ Info Maintenance

Le site sera en travaux aujourd'hui (15/04/2026) de 20h00 à 01h00. Certaines pages pourraient être inaccessibles.

Retour au blog

🔄 Git & Workflow DevOps : Versionner son infrastructure

Ce que j’ai fait

1. C’est quoi Git et pourquoi j’en ai besoin ?

Mon infrastructure fonctionne. Mais imaginons que je modifie un fichier de config et que tout casse. Comment je reviens en arrière ? Comment je me souviens de ce que j’ai changé il y a 2 semaines ?

Git, c’est un système qui prend une « photo » de mon projet à chaque fois que je le lui demande. Chaque photo s’appelle un commit. Je peux :

  • Voir l’historique complet de toutes mes modifications
  • Revenir à n’importe quelle version précédente
  • Sauvegarder mon travail sur GitHub (un coffre-fort en ligne)

GitHub, c’est aussi la vitrine de mon projet. Les gens pourront voir mon code, mon historique, et comprendre comment j’ai travaillé.


2. Créer le dépôt GitHub

Un dépôt (ou « repo »), c’est simplement un dossier de projet hébergé sur GitHub.

Sur le navigateur :

  1. Créer un compte sur github.com
  2. Cliquer sur « New repository »
  3. Nom : portfolio-infra
  4. Visibilité : Public (pour que les gens puissent le voir)
  5. Ne rien cocher d’autre → Create repository

Ensuite, créer un token d’authentification (PAT) :

GitHub n’accepte plus les mots de passe classiques pour envoyer du code. Il faut un token, une sorte de mot de passe spécial à usage unique.

  1. GitHub → Settings → Developer Settings → Personal Access Tokens → Tokens (classic)
  2. Générer un nouveau token avec la permission repo
  3. Copier le token et le stocker immédiatement dans un espace sécurisé


3. Initialiser Git sur le serveur

Maintenant je relie mon dossier de projet sur le serveur à mon dépôt GitHub.

cd /srv/portfolio

# Transformer ce dossier en projet Git
git init

# Dire à Git qui je suis (pour signer les commits)
git config --global user.name "MonPseudoGitHub"
git config --global user.email "mon-email@example.com"

# Relier ce dossier au dépôt GitHub
git remote add origin https://github.com/MonPseudo/portfolio-infra.git

En résumé :

  • git init → « Ce dossier est maintenant suivi par Git »
  • git config → « Voici qui fait les modifications »
  • git remote add → « Voici où envoyer le code en ligne »


4. Le fichier .gitignore (CRITIQUE)

C’est le premier fichier à créer avant d’envoyer quoi que ce soit.

Le .gitignore dit à Git : « Ces fichiers existent sur le serveur, mais tu ne dois jamais les envoyer sur GitHub. »

Pourquoi ? Parce que mon dépôt est public. Si mes mots de passe se retrouvent dedans, n’importe qui peut les lire.

nano .gitignore
# Secrets (mots de passe de la base de données etc.)
.env

# Fichiers uploadés sur WordPress (images, PDF...)
wp-content/uploads/

# Config WordPress (contient des infos sensibles)
wp-config.php

# Fichiers système inutiles
*.log
.DS_Store
Thumbs.db

Ce que ça donne concrètement :

FichierSur le serveurSur GitHub
docker-compose.yml
nginx/default.conf
.gitignore
.env❌ Bloqué
wp-config.php❌ Bloqué

💡 J’ai aussi créé un fichier .env.example qui montre la structure du .env mais sans les vrais mots de passe. Comme ça, quelqu’un qui clone mon projet sait quelles variables il doit remplir.

nano .env.example
MYSQL_ROOT_PASSWORD=à_remplacer
MYSQL_DATABASE=à_remplacer
MYSQL_USER=à_remplacer
MYSQL_PASSWORD=à_remplacer
WORDPRESS_DB_HOST=db:3306
WORDPRESS_DB_NAME=à_remplacer
WORDPRESS_DB_USER=à_remplacer
WORDPRESS_DB_PASSWORD=à_remplacer

5. Premier envoi sur GitHub

# Voir ce que Git a détecté
git status

# Ajouter les fichiers un par un (pas "git add ." à l'aveugle)
git add .gitignore .env.example docker-compose.yml nginx/

# Créer le premier commit (la première "photo")
git commit -m "Init: architecture Docker + config Nginx"

# Envoyer sur GitHub
git push -u origin main

Git me demande mon identifiant GitHub et mon token PAT (pas mon mot de passe).


6. La discipline des commits (Atomic Commits)

Un mauvais commit :

git add .
git commit -m "modifications"

→ On ne sait pas ce qui a changé, ni pourquoi. Inutile pour l’historique.

Un bon commit (atomic) :

# Je modifie UN seul truc → je commit CE truc
git add nginx/default.conf
git commit -m "Nginx: ajout cache 30j pour les images"

La règle : Un commit = une modification logique = un message clair.

Voici des exemples de bons messages :

MessageCe qu’on comprend
Init: architecture Docker + NginxPremier setup du projet
Fix: correction port Nginx 80 → 443Correction d’un bug
Feat: ajout .env.exampleNouvelle fonctionnalité
Docs: mise à jour READMEDocumentation


Démarche a suivre :

# 1. Qu'est-ce qui a changé ?
git status

# 2. Vérifier le contenu des changements
git diff

# 3. Ajouter uniquement ce qui concerne MA modification
git add fichier_modifié

# 4. Décrire ce que j'ai fait
git commit -m "Explication courte et claire"

# 5. Envoyer sur GitHub
git push

8. Et si je dois tout redéployer sur un nouveau serveur ?

C’est tout l’intérêt de Git + Docker : je peux reconstruire
mon infrastructure en 4 commandes.

# 1. Récupérer mon projet depuis GitHub
git clone https://github.com/MonPseudo/portfolio-infra.git
cd portfolio-infra

# 2. Créer le fichier de secrets (il n'est pas sur GitHub)
cp .env.example .env
nano .env
# → Remplir avec les vrais mots de passe

# 3. Verrouiller le fichier
chmod 600 .env

# 4. Tout lancer
docker compose up -d

C’est ce qu’on appelle « Infrastructure as Code » : toute mon infrastructure est décrite dans des fichiers texte versionnés. Je n’ai rien à configurer à la main, tout est dans le dépôt.

C’est aussi pour ça que le .env.example existe : sans lui, quelqu’un qui clone le projet ne saurait pas quelles variables créer.


9. Commandes utiles pour la suite

# Voir l'historique de tous mes commits
git log --oneline

# Voir ce qui a changé depuis le dernier commit
git status

# Voir le détail des modifications
git diff

# Vérifier que .env n'a JAMAIS été envoyé sur GitHub
git log --all --full-history -- .env

# Vérifier ma configuration Git
git config --list

Ce que j’ai compris

  • Git ne sauvegarde pas mes fichiers automatiquement. C’est moi qui décide quoi envoyer et quand.
  • Le .gitignore est la première barrière de sécurité : il empêche les secrets d’atterrir sur GitHub.
  • Un bon historique Git, c’est comme un journal de bord : chaque commit raconte ce qui a été fait et pourquoi.
  • git add . c’est dangereux → je préfère ajouter les fichiers un par un pour garder le contrôle.
  • Le dépôt public sur GitHub, c’est ma vitrine professionnelle. Une personne peut voir si je travaille proprement ou si je fais n’importe quoi.