Exercice 06 : Projet Capstone - Versionner un Portfolio DevOps de A à Z
🎯 Objectifs
À la fin de cet exercice, vous serez capable de :
- ✅ Initialiser un dépôt Git et configurer l'identité
- ✅ Créer des commits atomiques avec des messages conventionnels
- ✅ Créer des branches de features et les merger dans
main - ✅ Détecter et résoudre un conflit de merge
- ✅ Naviguer dans l'historique avec
git log - ✅ Pousser le projet complet sur GitHub
Durée estimée : 40 minutes
Difficulté : ⭐⭐⭐⭐☆ (Avancé)
Prérequis :
- Avoir complété les exercices 01 à 05
- Un compte GitHub configuré avec accès SSH ou HTTPS
📖 Contexte
Vous allez créer un portfolio DevOps versionné avec Git. Ce portfolio contiendra une page d'accueil, une page de compétences et une page de projets - chaque section développée sur sa propre branche, exactement comme on travaille dans une équipe.
Cet exercice mobilise toutes les compétences du module :
git init,git config(exercice 01)git add,git commit, messages conventionnels (exercice 01)git branch,git switch,git merge(exercice 02)- Résolution de conflits (exercice 03)
git push,git pull, remote GitHub (exercice 04)git log,git log --graph(exercice 01-02)
📋 Énoncé
Construisez votre portfolio Git en 6 tâches dans l'ordre indiqué.
🧭 Déroulement de l'exercice
Tâche 1 : Initialiser le dépôt
Créez un dossier devops-portfolio, initialisez-y un dépôt Git, configurez votre identité, puis créez un fichier README.md avec votre premier commit.
Le README.md doit contenir :
# Portfolio DevOps
Bienvenue sur mon portfolio DevOps.Indice :
git init,git config user.name,git config user.email,git add,git commit -m "message".
Vérification : git log --oneline doit afficher votre premier commit.
Tâche 2 : Créer le fichier d'accueil sur main
Créez index.html avec une structure HTML basique (titre, en-tête, un paragraphe de présentation). Committez avec un message conventionnel commençant par feat:.
Indice : Un message conventionnel pour une nouvelle feature commence par
feat: description. Exemple :feat: ajouter la page d'accueil HTML.
Vérification : git show HEAD doit afficher le diff du fichier index.html.
Tâche 3 : Développer la page "Compétences" sur une branche
Créez une branche feature/competences. Sur cette branche, créez competences.md listant au moins 5 compétences DevOps (Linux, Git, Docker, etc.). Faites 2 commits distincts : un pour la structure, un pour le contenu.
Indice :
git switch -c feature/competencescrée et bascule sur la branche. Deux commits séparés :feat: ajouter structure competences.mdpuisfeat: remplir la liste des compétences.
Vérification : git log --oneline feature/competences doit afficher 3 commits (le initial + les 2 nouveaux).
Tâche 4 : Développer la page "Projets" et créer un conflit
Sur main, ajoutez une ligne dans README.md : Voir aussi : [Projets](projets.md).
Ensuite, créez une branche feature/projets. Sur cette branche, modifiez la même ligne du README.md pour y mettre : Voir aussi : [Compétences](competences.md) | [Projets](projets.md). Créez aussi le fichier projets.md avec au moins 2 projets fictifs.
Indice : Modifier la même ligne dans deux branches différentes provoque un conflit au moment du merge.
Vérification : git log --oneline feature/projets doit lister vos commits sur cette branche.
Tâche 5 : Merger les branches et résoudre le conflit
Retournez sur main. Mergez d'abord feature/competences (sans conflit). Puis mergez feature/projets - un conflit apparaîtra dans README.md. Résolvez-le en gardant la version complète : Voir aussi : [Compétences](competences.md) | [Projets](projets.md). Créez un commit de merge propre.
Indice :
git merge feature/competences, puisgit merge feature/projets. En cas de conflit, Git marque les zones conflictuelles avec<<<<<<,=======,>>>>>>. Éditez le fichier, supprimez les marqueurs, puisgit add README.mdetgit commit.
Vérification : git log --oneline --graph doit montrer les deux branches qui convergent vers main.
Tâche 6 : Publier sur GitHub
Créez un repository devops-portfolio sur GitHub (sans README, sans .gitignore). Configurez le remote et poussez main avec l'historique complet.
Indice :
git remote add origin <URL>, puisgit push -u origin main.
Vérification : git remote -v doit afficher le remote origin. Sur GitHub, vous devez voir les 3 fichiers (README.md, index.html, competences.md, projets.md) et l'historique complet des commits.
🗂️ Mini-Projet : État final du portfolio
Une fois les 6 tâches terminées, vérifiez l'état complet de votre dépôt :
# Afficher le résumé du projet
echo "=== Fichiers du portfolio ==="
ls -1
echo ""
echo "=== Historique complet ==="
git log --oneline --graph --all
echo ""
echo "=== Remote configuré ==="
git remote -v
echo ""
echo "=== Statut propre ==="
git statusCheckpoints de validation :
lslisteREADME.md,index.html,competences.mdetprojets.mdgit log --oneline | wc -lretourne au moins 6 commitsgit log --oneline --graphmontre les deux branches mergées dansmaingit branchne liste plusfeature/competencesnifeature/projets(branches supprimées après merge)cat README.mdcontient la ligneVoir aussi : [Compétences](competences.md) | [Projets](projets.md)git remote -vaffiche l'URL GitHub- Sur GitHub, l'onglet "Commits" affiche l'historique complet