RousselTMLEARNING

Article · DevOps : de la découverte à l'expertise

Git pour le DevOps

1. Stratégies de branches #

Trunk-based ou GitFlow.

Comparaison #

Trunk-based development
Chaque branche vit moins d'une journée ; main reste déployable.
Trunk-based developmentGitFlow
Branchesmain + branches de quelques heuresmain, develop, feature, release, hotfix
Intégrationau moins quotidienneà la fin de la fonctionnalité
Fonctionnalités inachevéescachées par des feature flagsrestent dans leur branche
Adapté àdéploiement continu, services webversions maintenues en parallèle, logiciels livrés
Risquenécessite des tests automatisés solidesconflits de fusion, intégration tardive
Bonne Pratique : Les recherches DORA associent le trunk-based development (moins de trois branches actives, fusion quotidienne) à une meilleure performance de livraison. Réservez GitFlow aux produits qui maintiennent plusieurs versions.

2. Pull requests et revues #

Relire vite et bien.

Une bonne pull request #

  • Petite : moins de 400 lignes modifiées, un seul sujet.
  • Une description qui explique le pourquoi, avec le lien vers le ticket.
  • Le pipeline CI est vert avant la relecture humaine.
  • Relue dans la journée : une revue qui attend plusieurs jours est une file d'attente de plus.

Protéger main #

  • Fusion uniquement par pull request, au moins une approbation.
  • Statuts CI obligatoires (tests, analyse, build).
  • Historique linéaire (squash ou rebase) et branche à jour avant fusion.
  • Fichier CODEOWNERS pour impliquer automatiquement les bons relecteurs.
# CODEOWNERS
/infra/         @equipe-plateforme
/src/paiement/  @equipe-paiement
*.tf            @equipe-plateforme

3. Commits et versions #

Un historique lisible par les humains et les outils.

Commits conventionnels #

feat(panier): ajouter le calcul des frais de port
fix(api): corriger le code HTTP en cas de stock vide
docs: documenter la variable DATABASE_URL
refactor!: renommer le champ client_id en customer_id

BREAKING CHANGE: l'API v1 n'accepte plus client_id

Le préfixe (feat, fix, docs, chore, refactor, test, ci) permet de générer automatiquement le changelog et le prochain numéro de version.

Versionnement sémantique #

ChangementVersionExemple
Correctif (fix)PATCH1.4.2 → 1.4.3
Nouvelle fonctionnalité compatible (feat)MINOR1.4.3 → 1.5.0
Changement incompatible (BREAKING CHANGE)MAJOR1.5.0 → 2.0.0
git tag -a v1.5.0 -m "v1.5.0"
git push origin v1.5.0
git describe --tags            # version la plus proche
git log v1.4.0..v1.5.0 --oneline --no-merges   # changements entre deux versions

Hooks et outils #

# .git/hooks/commit-msg : refuser un message non conventionnel
#!/usr/bin/env bash
grep -qE '^(feat|fix|docs|chore|refactor|test|ci|perf|build)(\(.+\))?!?: .+' "$1" || {
  echo "Message non conventionnel : type(portée): description" >&2; exit 1; }

En équipe, on partage les hooks avec pre-commit (formatage, lint, détection de secrets) et on génère versions et changelog avec semantic-release ou release-please dans le pipeline.

4. Réparer sans paniquer #

Les commandes de secours.

Commandes #

git revert <sha>             # annuler un commit publié (crée un commit inverse)
git commit --amend           # corriger le dernier commit non poussé
git rebase -i HEAD~3         # réorganiser ses commits locaux avant la PR
git reflog                   # retrouver un commit « perdu »
git bisect start ; git bisect bad ; git bisect good v1.4.0   # trouver le commit fautif
git stash ; git stash pop

Règle d'or #

Erreur Courante : Ne réécrivez jamais (rebase, push --force) l'historique d'une branche partagée comme main : utilisez git revert. Si un force push est nécessaire sur votre branche, préférez --force-with-lease.

📄 Git pour le DevOps : branches, revues de code et versions →

Mon suivi

  • ⏱ Durée estimée : ≈ 6 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

✉️ Poser une question

Glossaire de la formation

DevOps

Culture, mouvement et pratiques visant à unifier le développement logiciel (Dev) et l'administration des infrastructures informatiques (Ops).Découvrir...

DevSecOps

Intégration native de la sécurité (Security) dès la conception et tout au long du cycle de vie DevOps (approche "Shift-Left").Voir comment intégrer la...

AIOps (Artificial Intelligence for IT Operations)

Utilisation de l'intelligence artificielle et de l'apprentissage automatique pour automatiser et améliorer les opérations informatiques (ex: détection...

NoOps

Concept où l'environnement informatique est tellement automatisé et abstrait (ex: Serverless, PaaS) qu'il ne nécessite quasiment plus d'équipe opérati...

GitOps

Pratique de déploiement continu où un dépôt Git sert de source unique de vérité déclarative pour l'infrastructure et les applications.Maîtriser le dép...

FinOps (Financial Operations)

Culture de responsabilité financière du Cloud visant à maximiser la valeur métier en optimisant les coûts. Elle permet une collaboration étroite entre...

SRE (Site Reliability Engineering)

Discipline qui applique les principes de l'ingénierie logicielle aux problématiques d'exploitation. Le but est de créer des systèmes hautement scalabl...

Platform Engineering

Discipline consistant à concevoir et construire des chaînes d'outils et des flux de travail permettant aux développeurs de gérer leur infrastructure e...

Articles recommandés

Mur de la confusion

Le 'mur de la confusion' (ou 'wall of confusion') est une métaphore souvent utilisée dans le cont...

Soutien Logistique Intégré

Soutien Logistique Intégré (SLI) (L'Integrated Logistics Support (ILS) en anglais), est une appro...

Application 12 Facteurs

Un guide détaillé sur la méthodologie des 12 facteurs pour le développement d'applications modern...

Le framework CALMS : Les 5 piliers du DevOps

Découvrez le framework CALMS, le socle indispensable pour réussir votre transformation DevOps à t...

Bonnes pratiques DevOps : culture, CI/CD, infrastructure as code et mesure

Bonnes pratiques DevOps : culture et collaboration, intégration et livraison continues, trunk-bas...

Tests de charge avec Grafana k6 : pourquoi et quels types de tests

Pourquoi tester la performance avant la production, les types de tests (smoke, charge, stress, pi...

Écrire des scripts k6 : requêtes, vérifications, scénarios et exécuteurs

La structure d'un script k6 (init, setup, default, teardown), les requêtes HTTP, les checks, les ...

Seuils, métriques et résultats d'un test k6

Lire le résumé d'un test k6, comprendre les métriques intégrées (http_req_duration, http_req_fail...

Observer un test k6 : Prometheus, Grafana et corrélation avec le système testé

Envoyer les résultats de k6 dans Prometheus (remote write) ou en OpenTelemetry, les visualiser da...