DEVOPS
CH1
🚀 Qu’est-ce que le DevOps (à retenir absolument)
Le DevOps n’est PAS un outil.
👉 C’est un ensemble de pratiques, de principes et une culture qui vise à :
rapprocher Développement (Dev) et Opérations (Ops),
réduire le temps de livraison,
améliorer la qualité, la stabilité et la fiabilité des systèmes,
livrer souvent, vite et sans casser la prod.
Avant DevOps, les équipes travaillaient en silos, ce qui causait :
des déploiements lents,
beaucoup d’erreurs humaines,
des bugs détectés trop tard,
la fameuse phrase : « Ça marche sur ma machine » 😅 .
🧠 La philosophie clé : la culture avant les outils
80 % culture – 20 % outils
Les piliers culturels DevOps :
Collaboration : responsabilité partagée Dev + Ops
Transparence : communication continue
Apprentissage : post-mortems sans blâme
Responsabilisation : chacun est responsable de la fiabilité
👉 C’est TRÈS important pour les examens et les questions théoriques.
🔑 Les principes fondamentaux : le modèle CALMS
À connaître par cœur 👇
Lettre Principe Idée clé
C Culture Briser lehs silos
A Automation Automatiser builds, tests, déploiements
Lettre Principe Idée clé
L Lean Éliminer le gaspillage
M Measurement Mesurer tout (perf, MTTR, fréquence)
S Sharing Partage des connaissances
🔄 Cycle de vie : Traditionnel vs DevOps
❌ Cycle traditionnel (SDLC)
Étapes longues et séparées
Tests tardifs
Déploiements manuels
Feedback lent
Rollbacks difficiles
✅ Cycle DevOps
Cycle continu (∞)
Intégration, tests et déploiements automatisés
Monitoring et feedback constants
Collaboration Dev + Ops
👉 Le schéma en forme de ∞ (Dev ↔ Ops) est fondamental .
⚙️CI / CD : le cœur technique du DevOps
CI – Continuous Integration
Le code est fusionné fréquemment
Chaque push déclenche :
o build
o tests automatiques
Objectif : détecter les bugs tôt
CD – Continuous Delivery / Deployment
Delivery : prêt à déployer (validation manuelle possible)
Deployment : déploiement automatique en production
Bénéfices :
Moins d’erreurs humaines
Déploiements rapides et fiables
Petits changements réversibles
Meilleure qualité logicielle
🧰 La DevOps Toolchain (vue d’ensemble)
Tu n’as PAS à maîtriser tous les outils, mais à comprendre leur rôle :
Étape Objectif Exemples
Plan Gestion de projet Jira, Trello
Code Versioning Git, GitHub, GitLab
Build Compilation Maven, Gradle
Test Tests auto JUnit, Selenium
Release CI/CD Jenkins, GitHub Actions
Deploy Containers Docker, Kubernetes
Operate Infra Ansible, Terraform
Monitor Logs & métriques Prometheus, Grafana
🔗 DevOps, Agile et Lean : le lien
Agile → bien développer le logiciel
Lean → optimiser les processus
DevOps → livrer en continu, de manière fiable, sur toute la chaîne
👉 DevOps étend Agile et Lean à l’infrastructure et à la production .
🎯 Ce qu’on attend de toi dans ce cours
Comprendre les concepts (plus que les outils)
Être capable d’expliquer :
o pourquoi DevOps existe
o comment CI/CD améliore la qualité
o la différence entre delivery et deployment
Savoir relier DevOps à Cloud, Big Data et automatisation
🟦 PARTIE 1 — Fondements et définition de DevOps
Q1. DevOps est principalement :
A. Un outil d’automatisation
B. Un langage de programmation
C. Une culture, des pratiques et des processus
D. Une plateforme cloud
Q2. L’objectif principal de DevOps est de :
A. Supprimer les équipes Ops
B. Réduire le cycle de vie du développement et améliorer la qualité
C. Remplacer les méthodes Agile
D. Augmenter la documentation
Q3. Avant DevOps, quel était le principal problème des organisations ?
A. Trop d’automatisation
B. Des équipes trop petites
C. Le travail en silos entre Dev, QA et Ops
D. Trop de tests automatisés
Q4. La phrase « It works on my machine » illustre :
A. Un bon test unitaire
B. Un problème de compatibilité matérielle
C. Un manque de collaboration et d’automatisation
D. Une bonne pratique DevOps
🟦 PARTIE 2 — Culture DevOps
Q5. Une transformation DevOps réussie repose principalement sur :
A. Les outils
B. Le budget
C. La culture
D. Le cloud
Q6. Quel élément n’est PAS un pilier culturel DevOps ?
A. Collaboration
B. Transparence
C. Blâme en cas d’incident
D. Apprentissage continu
Q7. Les post-mortems DevOps doivent être :
A. Orientés sanctions
B. Sans blâme
C. Réservés aux managers
D. Facultatifs
🟦 PARTIE 3 — Principes CALMS
Q8. Dans CALMS, le C signifie :
A. Code
B. Control
C. Culture
D. Cloud
Q9. Le principe Automation vise principalement à :
A. Supprimer les développeurs
B. Automatiser les tâches répétitives
C. Réduire la qualité
D. Éviter les tests
Q10. Le M de CALMS correspond à :
A. Management
B. Monitoring uniquement
C. Measurement
D. Maintenance
Q11. Quel indicateur est lié au principe Measurement ?
A. Nombre de développeurs
B. MTTR (Mean Time To Recovery)
C. Taille du code
D. Couleur des dashboards
🟦 PARTIE 4 — Cycle de vie logiciel
Q12. Dans le SDLC traditionnel, les tests sont généralement :
A. Continus
B. Automatisés dès le début
C. Réalisés tardivement
D. Inexistants
Q13. Quel problème est typique du cycle traditionnel ?
A. Feedback rapide
B. Déploiements fréquents
C. Rollbacks difficiles
D. Surveillance automatisée
Q14. Le cycle DevOps est souvent représenté par :
A. Un cercle fermé
B. Un modèle en V
C. Une boucle infinie
D. Un diagramme linéaire
🟦 PARTIE 5 — CI / CD
Q15. CI signifie :
A. Continuous Infrastructure
B. Continuous Integration
C. Centralized Integration
D. Cloud Integration
Q16. L’objectif principal de la CI est de :
A. Déployer en production
B. Détecter les bugs le plus tôt possible
C. Écrire plus de code
D. Supprimer les tests manuels
Q17. Quelle affirmation est correcte ?
A. Continuous Delivery = déploiement automatique en production
B. Continuous Deployment nécessite une validation manuelle
C. Continuous Deployment est entièrement automatisé
D. CI et CD sont identiques
Q18. Quelle est la bonne séquence CI/CD ?
A. Test → Code → Build → Deploy
B. Code → Build → Test → Deploy
C. Build → Code → Test → Deploy
D. Deploy → Test → Code → Build
🟦 PARTIE 6 — Automatisation et outils
Q19. Quel outil est typiquement utilisé pour l’Infrastructure as Code ?
A. Jenkins
B. Git
C. Terraform
D. Selenium
Q20. Docker est principalement utilisé pour :
A. La gestion de projet
B. La surveillance
C. La conteneurisation
D. Les tests unitaires
Q21. Kubernetes sert principalement à :
A. Compiler le code
B. Orchestrer des conteneurs
C. Écrire des tests
D. Gérer des tickets
Q22. Quel outil est associé au monitoring ?
A. Maven
B. Git
C. Prometheus
D. Jira
🟦 PARTIE 7 — Agile, Lean et DevOps
Q23. Agile se concentre principalement sur :
A. L’infrastructure
B. La valeur client et les itérations
C. La sécurité réseau
D. Le monitoring
Q24. Lean vise principalement à :
A. Ajouter des fonctionnalités
B. Éliminer le gaspillage
C. Automatiser uniquement
D. Supprimer les tests
Q25. DevOps étend Agile et Lean en :
A. Les remplaçant
B. Les limitant au Dev
C. Couvrant toute la chaîne de livraison
D. Supprimant les Ops
🟩 CORRIGÉ + EXPLICATIONS
1. C — DevOps = culture + pratiques + outils
2. B — Réduction du cycle + qualité
3. C — Problème clé : silos
4. C — Mauvaise intégration et communication
5. C — 80 % culture
6. C — DevOps est sans blâme
7. B — Apprentissage continu
8. C — Culture
9. B — Automatiser les tâches répétitives
10. C — Measurement
11. B — MTTR est un KPI clé
12. C — Tests tardifs
13. C — Rollbacks compliqués
14. C — Boucle infinie Dev ↔ Ops
15. B — Continuous Integration
16. B — Détection précoce
17. C — Déploiement automatique
18. B — Pipeline standard
19. C — Terraform = IaC
20. C — Conteneurs
21. B — Orchestration
22. C — Monitoring
23. B — Valeur client
24. B — Élimination du gaspillage
25. C — DevOps couvre tout le pipeline
🟦 PARTIE 1 — Compréhension fine de DevOps
Q1. Le DevOps cherche avant tout à optimiser :
A. Le coût du matériel
B. Le flux de livraison de bout en bout
C. Le travail individuel des développeurs
D. La documentation technique
Q2. Dans une organisation DevOps mature, la responsabilité de la stabilité du système est :
A. Uniquement celle des Ops
B. Celle de l’équipe QA
C. Partagée entre Dev et Ops
D. Externalisée
Q3. DevOps favorise principalement des déploiements :
A. Rares et volumineux
B. Fréquents et de petite taille
C. Manuels mais contrôlés
D. Réservés aux périodes creuses
🟦 PARTIE 2 — Collaboration et feedback
Q4. Le feedback rapide est important en DevOps car il :
A. Réduit la documentation
B. Permet des corrections précoces et peu coûteuses
C. Élimine le besoin de tests
D. Remplace les réunions
Q5. Quel mécanisme DevOps permet le feedback après mise en production ?
A. Tests unitaires
B. Revue de code
C. Monitoring et observabilité
D. Planification Agile
Q6. En DevOps, les incidents doivent être traités comme :
A. Des fautes individuelles
B. Des opportunités d’apprentissage
C. Des échecs du management
D. Des événements exceptionnels à ignorer
🟦 PARTIE 3 — Automatisation : portée et limites
Q7. Pourquoi l’automatisation est-elle cruciale en DevOps ?
A. Elle supprime le besoin d’humains
B. Elle garantit zéro bug
C. Elle réduit les erreurs humaines répétitives
D. Elle remplace la culture
Q8. Quel type de tâche est le MOINS pertinent à automatiser ?
A. Déploiement répétitif
B. Provisionnement d’infrastructure
C. Décisions stratégiques complexes
D. Tests unitaires
Q9. L’automatisation favorise principalement :
A. Des systèmes plus rigides
B. Des processus plus lents
C. Des changements fréquents et fiables
D. Une dépendance accrue aux managers
🟦 PARTIE 4 — Mesure et amélioration continue
Q10. Pourquoi DevOps insiste-t-il sur la mesure (Measurement) ?
A. Pour surveiller les employés
B. Pour comparer les équipes
C. Pour améliorer en continu sur la base de données réelles
D. Pour satisfaire les audits
Q11. Le MTTR mesure :
A. Le temps moyen entre deux déploiements
B. Le temps moyen pour corriger un incident
C. Le nombre de bugs par version
D. Le temps de compilation
Q12. Quel indicateur est le PLUS cohérent avec DevOps ?
A. Nombre de lignes de code
B. Fréquence des déploiements
C. Nombre de réunions
D. Taille de l’équipe
🟦 PARTIE 5 — DevOps vs idées reçues
Q13. « DevOps est réservé aux grandes entreprises »
Cette affirmation est :
A. Vraie
B. Vraie uniquement dans le cloud
C. Fausse
D. Vraie pour les startups
Q14. Acheter un outil CI/CD signifie :
A. Adopter DevOps automatiquement
B. Améliorer la culture d’équipe
C. Mettre en place DevOps partiellement au mieux
D. Supprimer les silos
Q15. DevOps remplace :
A. Les développeurs
B. Les administrateurs système
C. Agile
D. Aucun des précédents
🟦 PARTIE 6 — Vision système et Big Picture
Q16. DevOps considère le logiciel comme :
A. Un produit fini
B. Un projet ponctuel
C. Un système vivant à faire évoluer
D. Un livrable figé
Q17. Quel concept DevOps est le PLUS lié à la résilience ?
A. Déploiements manuels
B. Changements rares
C. Petits changements réversibles
D. Validation tardive
Q18. Pourquoi les petits changements sont-ils préférés ?
A. Ils sont plus simples à facturer
B. Ils sont plus faciles à tester et à corriger
C. Ils éliminent les bugs
D. Ils réduisent le besoin de monitoring
🟦 PARTIE 7 — Mise en situation (raisonnement)
Q19. Une équipe déploie rarement, manuellement, avec beaucoup d’échecs.
Quelle pratique DevOps apporte le PLUS de valeur en premier ?
A. Ajouter plus de développeurs
B. Mettre en place CI/CD
C. Écrire plus de documentation
D. Réduire les tests
Q20. Une équipe a CI/CD mais beaucoup de conflits Dev/Ops.
Quel pilier CALMS est le plus faible ?
A. Automation
B. Lean
C. Culture
D. Measurement
🟩 CORRIGÉ DÉTAILLÉ
1. B — DevOps optimise tout le flux de livraison
2. C — Responsabilité partagée
3. B — Fréquent + petit = moins risqué
4. B — Correction rapide = coût réduit
5. C — Monitoring = feedback post-prod
6. B — Culture sans blâme
7. C — Moins d’erreurs humaines
8. C — Les décisions stratégiques restent humaines
9. C — Fréquence + fiabilité
10. C — Amélioration continue basée sur données
11. B — Temps de rétablissement
12. B — KPI clé DevOps
13. C — Mythe courant
14. C — Outil ≠ culture
15. D — DevOps relie, ne remplace pas
16. C — Système vivant
17. C — Réversibilité = résilience
18. B — Moins risqué, plus contrôlable
19. B — CI/CD réduit erreurs et lenteur
20. C — Problème humain, pas technique
Ch2
1️⃣ Objectif du cours
Ce cours a pour but de te faire comprendre :
Pourquoi le contrôle de version est indispensable en DevOps
Comment Git fonctionne (concepts + commandes)
Comment collaborer efficacement à plusieurs développeurs
Comment organiser le travail avec des workflows professionnels (Feature Branching,
GitFlow)
Comment gérer l’historique du code proprement (merge vs rebase)
👉 C’est un cours fondamental : Git est la base de CI/CD, DevOps et du travail en équipe.
2️⃣ Contrôle de version (Version Control System – VCS)
🔹 Définition
Un système de contrôle de version (VCS) permet de :
suivre l’évolution du code dans le temps,
conserver un historique,
faciliter la collaboration,
revenir à une version précédente en cas d’erreur.
🔹 Avantages clés
Travail simultané de plusieurs développeurs
Traçabilité : qui a modifié quoi, quand et pourquoi
Développement parallèle via les branches
Sécurité : retour arrière possible (rollback)
👉 Sans VCS, le travail collaboratif est chaotique .
3️⃣ Concepts fondamentaux de Git
📦 Repository (repo)
Dossier contenant :
o le code du projet
o l’historique complet des modifications
🧩 Commit
Une photo (snapshot) de l’état du projet à un instant donné
Contient :
o les changements
o un message explicatif
🌿 Branch
Ligne de développement indépendante
Permet de travailler sur une fonctionnalité sans casser la branche principale
🔀 Merge
Fusion de deux branches
Conserve l’historique complet
🔁 Rebase
Réécrit l’historique en replaçant les commits sur une nouvelle base
Utilisé pour avoir un historique plus linéaire et propre
4️⃣ Architecture Git : local vs remote
Git fonctionne avec deux niveaux :
🔹 Local
Working Directory : fichiers modifiés
Staging Area : fichiers prêts à être commités
Local Repository : commits locaux
🔹 Remote
Dépôt distant (GitHub, GitLab, etc.)
Utilisé pour la collaboration
🔹 Flux typique (schéma clé du cours)
1. Modifier un fichier
2. git add → staging
3. git commit → repo local
4. git push → repo distant
5. git pull / git fetch → récupérer les changements
👉 Ce schéma est TRÈS important pour l’examen .
5️⃣ Commandes Git essentielles
🔧 Initialisation & clonage
git init : créer un nouveau dépôt
git clone <url> : copier un dépôt existant
git clone --bare : dépôt sans working directory (serveur)
📝 Gestion des changements
git status : état des fichiers
git add . : ajouter les changements
git commit -m "msg" : valider
git commit --amend : modifier le dernier commit
git reset HEAD~1 : annuler un commit
🌿 Branches
git branch : lister
git branch feature-x : créer
git checkout feature-x : changer de branche
git merge feature-x : fusionner
🔄 Synchronisation
git fetch : récupérer sans fusion
git pull : récupérer + fusionner
git push : envoyer au remote
git push --force-with-lease : forcer (avec sécurité)
6️⃣ Git Workflows
🟦 Feature Branching
Chaque fonctionnalité ou bug :
est développée dans une branche dédiée
est fusionnée dans main après revue
Avantages :
Isolation des fonctionnalités
Revue de code facilitée
Branche principale toujours stable
👉 Workflow simple et très utilisé .
🟦 GitFlow (workflow avancé)
Branches principales :
main : code en production
develop : intégration des fonctionnalités
Branches de support :
feature/* : nouvelles fonctionnalités
release/* : préparation d’une version
hotfix/* : correction urgente en production
Avantages :
Organisation claire
Support du développement parallèle
Séparation production / développement
👉 Très populaire dans les équipes structurées .
7️⃣ Merge vs Rebase (concept clé)
🔀 Merge
Conserve tout l’historique
Crée un commit de fusion
Plus sûr pour le travail collaboratif
🔁 Rebase
Réécrit l’historique
Historique linéaire et propre
À éviter sur des branches partagées
👉 Le schéma comparatif du cours est fondamental pour comprendre la différence .
8️⃣ Outils de diagnostic et maintenance Git
📜 Historique
git log --oneline --graph
git show <commit>
🔍 Comparaison
git diff
git diff main..feature
Analyse
git blame <fichier> : qui a écrit quoi
git reflog : historique interne
git fsck : vérification du dépôt
🧹 Nettoyage
git gc
git prune
9️⃣ Lien avec DevOps
Git est :
le point de départ du CI/CD
la base de l’automatisation
l’outil central de la collaboration DevOps
👉 Pas de Git propre = pas de DevOps efficace
🎯 Ce que tu dois absolument maîtriser pour l’examen
Concepts : repo, commit, branch, merge, rebase
Différence fetch vs pull
Feature Branching vs GitFlow
Quand utiliser merge ou rebase
Rôle de Git dans DevOps
📘 QCM – DevOps 2
Software Versioning & Collaboration (Git)
🟦 PARTIE 1 — Contrôle de version (VCS)
Q1. Un système de contrôle de version (VCS) permet principalement de :
A. Compiler le code
B. Déployer des applications
C. Suivre les modifications du code dans le temps
D. Tester automatiquement le logiciel
Q2. Quel problème majeur le VCS résout-il ?
A. Le manque de documentation
B. Le travail collaboratif non contrôlé
C. La lenteur des compilations
D. Les conflits matériels
Q3. Le retour à une version précédente est possible grâce :
A. Aux branches
B. Aux commits
C. Au staging
D. Au monitoring
🟦 PARTIE 2 — Concepts fondamentaux Git
Q4. Un repository Git contient :
A. Uniquement le code source
B. Le code et l’historique des modifications
C. Seulement les fichiers compilés
D. Les pipelines CI/CD
Q5. Un commit correspond à :
A. Une sauvegarde automatique
B. Une copie du dépôt distant
C. Une image de l’état du projet à un instant donné
D. Une branche temporaire
Q6. Une branche permet principalement de :
A. Supprimer des commits
B. Travailler en parallèle sans affecter la branche principale
C. Forcer la synchronisation avec le remote
D. Compiler le code
Q7. Quelle affirmation est correcte ?
A. Une branche remplace un dépôt
B. Une branche est une ligne de développement indépendante
C. Une branche est toujours distante
D. Une branche empêche les conflits
🟦 PARTIE 3 — Architecture Git (Local / Remote)
Q8. Quel élément fait partie de l’environnement local ?
A. Remote repository
B. GitHub
C. Staging area
D. Serveur GitLab
Q9. L’ordre correct du flux Git local est :
A. Commit → Add → Push
B. Working directory → Staging → Local repository
C. Staging → Working directory → Commit
D. Push → Commit → Add
Q10. Quelle commande place les fichiers dans la staging area ?
A. git commit
B. git push
C. git add
D. git pull
Q11. Quelle commande envoie les commits vers le dépôt distant ?
A. git fetch
B. git pull
C. git push
D. git clone
🟦 PARTIE 4 — Commandes Git essentielles
Q12. git init permet de :
A. Télécharger un dépôt
B. Créer un nouveau dépôt local
C. Synchroniser avec le remote
D. Créer une branche
Q13. git clone permet de :
A. Créer un commit
B. Copier un dépôt existant
C. Supprimer un dépôt
D. Rebaser une branche
Q14. git status sert à :
A. Modifier l’historique
B. Voir l’état des fichiers
C. Fusionner des branches
D. Forcer un push
Q15. git commit --amend permet de :
A. Supprimer tous les commits
B. Modifier le dernier commit
C. Revenir à une ancienne version
D. Créer une branche
Q16. git reset HEAD~1 permet de :
A. Supprimer le dépôt
B. Annuler le dernier commit
C. Rebaser la branche
D. Forcer un push
🟦 PARTIE 5 — Branches et fusion
Q17. Quelle commande crée une branche ?
A. git checkout
B. git branch feature-x
C. git merge
D. git rebase
Q18. Quelle commande change de branche ?
A. git branch
B. git merge
C. git checkout
D. git push
Q19. Le merge :
A. Réécrit l’historique
B. Supprime les commits
C. Combine les modifications de plusieurs branches
D. Ne peut être utilisé que sur main
🟦 PARTIE 6 — Git Workflows
Q20. Le Feature Branching consiste à :
A. Travailler directement sur main
B. Développer chaque fonctionnalité dans une branche dédiée
C. Utiliser uniquement develop
D. Supprimer les branches après chaque commit
Q21. L’avantage principal du Feature Branching est :
A. Moins de commits
B. Une branche principale toujours stable
C. Moins de tests
D. Plus de conflits
Q22. Dans GitFlow, la branche main contient :
A. Le code expérimental
B. Le code prêt pour la production
C. Les fonctionnalités en cours
D. Les tests unitaires
Q23. La branche develop sert à :
A. Corriger les bugs urgents
B. Intégrer les nouvelles fonctionnalités
C. Héberger la production
D. Archiver le code
Q24. Quelle branche est utilisée pour un correctif urgent en production ?
A. feature/*
B. release/*
C. hotfix/*
D. develop
🟦 PARTIE 7 — Merge vs Rebase (TRÈS IMPORTANT)
Q25. Le merge :
A. Supprime l’historique
B. Conserve l’historique complet
C. Réécrit les commits
D. Est dangereux en équipe
Q26. Le rebase :
A. Crée un commit de merge
B. Réécrit l’historique
C. Est recommandé sur les branches partagées
D. Supprime les branches
Q27. Le rebase est principalement utilisé pour :
A. Déployer en production
B. Obtenir un historique linéaire et propre
C. Éviter les conflits
D. Supprimer des commits distants
Q28. Quelle bonne pratique est correcte ?
A. Rebaser une branche partagée
B. Rebaser uniquement des branches locales
C. Toujours préférer rebase à merge
D. Ne jamais utiliser merge
🟦 PARTIE 8 — Synchronisation et collaboration
Q29. git fetch :
A. Récupère et fusionne automatiquement
B. Récupère sans fusionner
C. Supprime les branches distantes
D. Modifie l’historique
Q30. git pull équivaut à :
A. fetch + rebase
B. fetch + merge
C. push + merge
D. commit + push
Q31. git push --force-with-lease :
A. Force sans aucune sécurité
B. Force avec vérification minimale
C. Supprime le remote
D. Est identique à git push
🟦 PARTIE 9 — Historique, analyse et maintenance
Q32. Quelle commande affiche l’historique détaillé ?
A. git diff
B. git log
C. git status
D. git blame
Q33. git blame permet de :
A. Supprimer un commit
B. Identifier qui a modifié chaque ligne
C. Fusionner des branches
D. Réécrire l’historique
Q34. git diff permet de :
A. Comparer des versions
B. Déployer le code
C. Nettoyer le dépôt
D. Configurer Git
Q35. git reflog est utile pour :
A. Nettoyer le dépôt
B. Voir l’historique interne des actions
C. Tester le code
D. Compiler
🟩 CORRIGÉ FINAL (AVEC EXPLICATIONS)
1. C — Suivi des modifications
2. B — Collaboration maîtrisée
3. B — Les commits permettent le rollback
4. B — Code + historique
5. C — Snapshot du projet
6. B — Travail parallèle
7. B — Ligne indépendante
8. C — Staging = local
9. B — Flux correct
10. C — git add
11. C — git push
12. B — Initialisation
13. B — Copie du dépôt
14. B — État des fichiers
15. B — Modifier dernier commit
16. B — Annuler dernier commit
17. B — Création de branche
18. C — Changement de branche
19. C — Fusion
20. B — Feature dédiée
21. B — Main stable
22. B — Production
23. B — Intégration
24. C — Hotfix
25. B — Historique conservé
26. B — Historique réécrit
27. B — Historique propre
28. B — Branches locales uniquement
29. B — Sans fusion
30. B — fetch + merge
31. B — Force sécurisé
32. B — Historique
33. B — Traçabilité
34. A — Comparaison
35. B — Historique interne
CH4
📝 QCM – Network Security (Chapter 4)
🔹 Partie 1 : Concepts réseaux & modèles
Q1. Internet est décrit comme :
A. Un réseau centralisé
B. Un réseau privé
C. Un réseau de réseaux
D. Un réseau local
Q2. Pourquoi Internet est-il difficile à sécuriser ?
A. Les données ne sont jamais chiffrées
B. Il est géré par une seule autorité
C. Les paquets passent par plusieurs nœuds indépendants
D. Les protocoles sont secrets
Q3. Le modèle OSI est :
A. Une architecture réelle d’Internet
B. Un modèle théorique en 7 couches
C. Une implémentation de TCP/IP
D. Un protocole de sécurité
Q4. Le principe d’encapsulation signifie que :
A. Les données sont chiffrées
B. Chaque couche ajoute un en-tête
C. Les données sont compressées
D. Les paquets suivent le même chemin
Q5. TCP/IP a été conçu à l’origine pour :
A. Résister aux attaques malveillantes
B. Sécuriser les communications web
C. Connecter des réseaux de confiance
D. Bloquer les intrusions
🔹 Partie 2 : Menaces réseau & attaques
Q6. Le port 80 est généralement utilisé pour :
A. SSH
B. HTTPS
C. FTP
D. HTTP
Q7. Le but principal du port scanning est :
A. Supprimer des fichiers
B. Trouver des services vulnérables
C. Chiffrer le trafic
D. Accélérer le réseau
Q8. Nmap est principalement utilisé pour :
A. Chiffrer les données
B. Scanner les ports
C. Bloquer les attaques
D. Gérer les firewalls
Q9. Le social engineering cible principalement :
A. Les protocoles réseau
B. Le matériel
C. Les humains
D. Les routeurs
Q10. L’écoute passive du trafic est appelée :
A. Spoofing
B. Eavesdropping
C. Flooding
D. Hijacking
Q11. Pourquoi le Wi-Fi est-il plus vulnérable ?
A. Il est lent
B. Il utilise TCP
C. Le signal est diffusé dans l’air
D. Il n’utilise pas d’adresses IP
Q12. Une attaque “Evil Twin” concerne :
A. DNS
B. Email
C. Wi-Fi
D. HTTP
Q13. Le vol de cookies permet principalement :
A. Le DoS
B. Le session hijacking
C. Le port scanning
D. Le spoofing DNS
Q14. Le DNS cache poisoning est une attaque sur :
A. La confidentialité
B. L’intégrité
C. La disponibilité
D. L’authentification
Q15. TCP ne protège pas contre les attaques intentionnelles car :
A. Il n’utilise pas de checksum
B. Il fait confiance aux nœuds
C. Il chiffre mal
D. Il bloque trop de paquets
🔹 Partie 3 : Vulnérabilités Web
Q16. L’attaque utilisant ../ dans une URL est appelée :
A. XSS
B. CSRF
C. Directory traversal
D. SQL injection
Q17. Le HTTP est considéré comme stateless car :
A. Il chiffre les données
B. Il n’utilise pas TCP
C. Il ne mémorise pas les requêtes précédentes
D. Il bloque les cookies
Q18. XSS permet principalement de :
A. Bloquer un serveur
B. Modifier le DNS
C. Voler des cookies
D. Saturer la bande passante
Q19. CSRF permet :
A. D’exécuter une action à l’insu de l’utilisateur
B. D’écouter le trafic
C. De scanner des ports
D. De modifier des paquets IP
🔹 Partie 4 : DoS, DDoS & Botnets
Q20. Une attaque DoS vise à :
A. Voler des données
B. Modifier des paquets
C. Rendre un service indisponible
D. Usurper une identité
Q21. Le SYN flood exploite :
A. Le chiffrement SSL
B. Le handshake TCP
C. Le protocole DNS
D. Le routage IP
Q22. Une attaque DDoS se distingue par :
A. Un seul attaquant
B. Des paquets chiffrés
C. De multiples machines attaquantes
D. Une attaque interne
Q23. Un botnet est :
A. Un firewall
B. Un IDS
C. Un réseau de machines compromises
D. Un protocole réseau
Q24. Mirai est célèbre car il ciblait surtout :
A. Les serveurs web
B. Les smartphones
C. Les objets connectés (IoT)
D. Les bases de données
🔹 Partie 5 : Sécurité réseau & défenses
Q25. Une DMZ sert à :
A. Protéger le Wi-Fi
B. Isoler les services publics
C. Chiffrer le trafic
D. Scanner les ports
Q26. Quelle stratégie firewall est la plus sûre ?
A. Tout autoriser
B. Bloquer seulement SSH
C. Tout bloquer sauf autorisé
D. Ne rien filtrer
Q27. Un firewall ne protège PAS contre :
A. Les attaques externes
B. Le trafic suspect
C. Les attaques internes
D. Le port scanning
Q28. Un firewall à inspection avec état :
A. Ignore les connexions
B. Analyse uniquement les ports
C. Suit l’état des connexions
D. Fonctionne uniquement sur HTTP
Q29. Un honeypot est :
A. Un vrai serveur critique
B. Un système leurre
C. Un IDS
D. Un routeur sécurisé
Q30. Un IDS basé sur les anomalies :
A. Détecte seulement les attaques connues
B. Analyse les comportements inhabituels
C. Bloque automatiquement le trafic
D. Remplace un firewall
✅ Corrigé
1. C
2. C
3. B
4. B
5. C
6. D
7. B
8. B
9. C
10. B
11. C
12. C
13. B
14. B
15. B
16. C
17. C
18. C
19. A
20. C
21. B
22. C
23. C
24. C
25. B
26. C
27. C
28. C
29. B
30. B
Si tu veux, je peux maintenant :
🔥 te faire un QCM chronométré comme un vrai examen
🧠 transformer ce QCM en fiche de révision intelligente
📊 te générer des exercices corrigés ou des études de cas
Dis-moi ce qui t’aiderait le plus 💪
CH3 conteneurisation avec docker
Avec plaisir 😄 Voici un QCM complet (bien long, bien carré) qui couvre TOUS les aspects du chapitre
Docker : conteneurs, VM vs containers, composants, architecture (namespaces), networking,
volumes, Dockerfile, commandes, et Docker Compose.
✅ QCM COMPLET — Containerization with Docker (BD2C)
Partie 1 — Concepts de base (Conteneurs)
Q1. Un conteneur est :
A. Une machine virtuelle complète
B. Un environnement léger contenant une application et ses dépendances
C. Un système d’exploitation indépendant
D. Un disque dur virtuel
Q2. Le but principal d’un conteneur est :
A. Accélérer le processeur
B. Exécuter une application de façon cohérente sur plusieurs environnements
C. Remplacer les réseaux
D. Stocker des fichiers permanents
Q3. Une caractéristique “Immutable” signifie :
A. Le conteneur peut être modifié à volonté
B. Le conteneur démarre toujours depuis une image fixe
C. Le conteneur garde ses données après suppression
D. Le conteneur peut changer de noyau
Q4. Une caractéristique “Éphémère” signifie :
A. Le conteneur est conçu pour être remplacé, pas modifié manuellement
B. Le conteneur est très lourd
C. Le conteneur ne démarre jamais
D. Le conteneur nécessite une VM
Partie 2 — VM vs Containers
Q5. La virtualisation dans une VM se fait via :
A. Container engine
B. Hyperviseur
C. Docker daemon
D. Registry
Q6. Dans un conteneur, l’isolation se fait par :
A. OS complet
B. Noyau du système hôte partagé
C. Hyperviseur type 1
D. BIOS dédié
Q7. Le temps de démarrage typique d’un conteneur est :
A. Plusieurs minutes
B. Plusieurs heures
C. Quelques secondes
D. Impossible à démarrer
Q8. La taille typique d’une VM est :
A. Quelques Ko
B. MB
C. GB
D. TB
Q9. La performance d’un conteneur est généralement :
A. Très lente
B. Quasi-native
C. Toujours plus lente qu’une VM
D. Nulle
Q10. La portabilité d’un conteneur est :
A. Basse
B. Moyenne
C. Haute
D. Impossible
Partie 3 — Composants Docker
Q11. Le Docker Client (CLI) sert à :
A. Exécuter les conteneurs directement
B. Envoyer des commandes au Docker daemon
C. Stocker les images
D. Compiler le noyau Linux
Q12. Le Docker daemon (dockerd) :
A. Est une interface graphique
B. S’exécute sur l’hôte et gère images + conteneurs
C. Sert uniquement à écrire Dockerfile
D. Sert uniquement au réseau
Q13. Une Docker image est :
A. Une instance en exécution
B. Un modèle en lecture seule
C. Une base de données
D. Un volume
Q14. Un Docker container est :
A. Une image en lecture seule
B. Une image stockée dans un registry
C. Une instance en exécution d’une image
D. Un fichier YAML
Q15. Un Docker registry sert à :
A. Exécuter les conteneurs
B. Stocker des images Docker
C. Gérer les namespaces
D. Remplacer Docker daemon
Partie 4 — Architecture : Namespaces (Isolation)
Q16. Le namespace PID isole :
A. Le réseau
B. Les processus
C. Les volumes
D. Les ports
Q17. Le namespace NET isole :
A. La pile réseau (interfaces, IP, routage)
B. Les utilisateurs
C. La RAM
D. Le système de fichiers
Q18. Le namespace IPC isole :
A. Le hostname
B. La communication inter-processus (mémoire partagée…)
C. Les ports
D. Les fichiers
Q19. Le namespace UTS isole :
A. Le noyau Linux
B. Le hostname et le nom de domaine
C. Les volumes
D. Les conteneurs en arrière-plan
Q20. Le namespace MNT isole :
A. Les points de montage du système de fichiers
B. Les adresses IP
C. Les registres Docker
D. Les images
Partie 5 — Docker Networking
Q21. Le driver réseau par défaut est :
A. overlay
B. none
C. bridge
D. host
Q22. Le réseau “bridge” permet :
A. Communication entre conteneurs sur le même hôte
B. Communication multi-hôtes obligatoire
C. Aucun accès réseau
D. Communication uniquement avec internet
Q23. Le mode “host” signifie :
A. Le conteneur a son propre réseau isolé
B. Le conteneur utilise directement le réseau de l’hôte
C. Le conteneur n’a pas de réseau
D. Le conteneur ne peut pas exposer de ports
Q24. Le driver “overlay” est utile pour :
A. Une seule machine locale
B. Swarm ou Kubernetes (multi-hôtes)
C. Désactiver le réseau
D. Remplacer les volumes
Q25. Le driver “none” signifie :
A. Réseau ultra rapide
B. Pas d’accès réseau
C. Réseau multi-hôtes
D. Réseau hôte
Q26. La commande pour lister les réseaux :
A. docker ps
B. docker network ls
C. docker images
D. docker volume ls
Q27. La commande pour créer un réseau :
A. docker network create mynet
B. docker network add mynet
C. docker create network mynet
D. docker run mynet
Q28. La commande pour connecter un conteneur à un réseau :
A. docker network attach
B. docker connect network
C. docker network connect mynet app
D. docker run connect
Q29. La commande pour afficher les détails JSON d’un réseau :
A. docker info
B. docker inspect mynet
C. docker network show
D. docker show mynet
Partie 6 — Docker Volumes (Storage)
Q30. Pourquoi les volumes sont importants ?
A. Parce que les conteneurs sont immuables
B. Parce que les conteneurs sont éphémères (données perdues)
C. Parce que Docker ne supporte pas le stockage
D. Parce que les images sont modifiables
Q31. La commande pour créer un volume :
A. docker create volume app_data
B. docker volume create app_data
C. docker volume add app_data
D. docker storage create app_data
Q32. La commande pour lister les volumes :
A. docker volume ls
B. docker volumes
C. docker ps -v
D. docker ls volume
Q33. docker volume inspect app_data affiche :
A. Les logs
B. La configuration JSON du volume et son chemin
C. Les images
D. Les réseaux
Q34. La commande pour supprimer un volume :
A. docker volume rm app_data
B. docker rm volume app_data
C. docker delete app_data
D. docker rmi app_data
Q35. Un “Named volume” est :
A. Un volume géré par Docker
B. Un répertoire host obligatoire
C. Un volume stocké uniquement en RAM
D. Un conteneur spécial
Q36. Un “Bind mount” est :
A. Un volume Docker automatique
B. Un mapping d’un répertoire hôte dans le conteneur
C. Un stockage en mémoire
D. Un réseau overlay
Q37. Un “Tmpfs mount” est :
A. Stockage permanent sur disque
B. Stockage temporaire en RAM
C. Stockage multi-hôtes
D. Stockage d’images
Partie 7 — Dockerfile (Image)
Q38. Dans un Dockerfile, FROM sert à :
A. Exposer un port
B. Définir l’image de base
C. Copier un fichier
D. Lancer un conteneur
Q39. WORKDIR /app signifie :
A. Copier dans /app
B. Mettre le répertoire de travail dans /app
C. Exposer le port /app
D. Créer un volume /app
Q40. COPY target/[Link] /app/[Link] sert à :
A. Télécharger un fichier depuis internet
B. Copier un fichier local dans l’image
C. Exposer un port
D. Supprimer un fichier
Q41. EXPOSE 8080 signifie :
A. Le conteneur ouvre automatiquement internet
B. Le conteneur indique qu’il utilise le port 8080
C. Le conteneur supprime le port
D. Le conteneur démarre en 8080 secondes
Q42. ENTRYPOINT ["java","-jar","[Link]"] sert à :
A. Définir la commande principale au démarrage du conteneur
B. Installer Java sur la machine hôte
C. Créer un volume
D. Créer un réseau
Partie 8 — Commandes Docker Images
Q43. Construire une image depuis un Dockerfile :
A. docker run -t myapp:1.0 .
B. docker build -t myapp:1.0 .
C. docker images -t myapp:1.0
D. docker create -t myapp:1.0
Q44. Lister les images :
A. docker images
B. docker ps
C. docker volume ls
D. docker logs
Q45. Supprimer une image :
A. docker rm myapp:1.0
B. docker stop myapp:1.0
C. docker rmi myapp:1.0
D. docker delete myapp:1.0
Partie 9 — Commandes Docker Containers
Q46. Démarrer un conteneur en arrière-plan :
A. docker run -d ...
B. docker run -f ...
C. docker start -f ...
D. docker ps -d ...
Q47. -p 8080:8080 signifie :
A. 8080 est un volume
B. 8080 est un réseau
C. Mapping port hôte:port conteneur
D. Arrêter le port
Q48. Lister les conteneurs en cours :
A. docker images
B. docker ps
C. docker logs
D. docker exec
Q49. Arrêter un conteneur :
A. docker stop
B. docker down
C. docker kill image
D. docker pause image
Q50. Supprimer un conteneur :
A. docker rm
B. docker rmi
C. docker delete
D. docker remove image
Q51. Voir les logs :
A. docker ps
B. docker logs
C. docker log
D. docker inspect logs
Q52. Entrer dans un conteneur :
A. docker exec -it bash
B. docker enter
C. docker shell
D. docker connect
Partie 10 — Docker Compose
Q53. Docker Compose sert à :
A. Gérer uniquement les images
B. Lancer plusieurs services via un fichier YAML
C. Créer des VM
D. Créer des volumes uniquement
Q54. Dans un fichier compose, services: contient :
A. Les réseaux uniquement
B. Les volumes uniquement
C. Les conteneurs/services à lancer
D. Les logs
Q55. depends_on: signifie :
A. Le service est supprimé automatiquement
B. Le service démarre après l’autre service
C. Le service est un volume
D. Le service n’a pas de réseau
Q56. Dans l’exemple, la base de données est :
A. MySQL
B. MongoDB
C. Postgres 15
D. Redis
Q57. Les variables POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB servent à :
A. Configurer la base Postgres au démarrage
B. Créer un réseau
C. Exposer le port 8080
D. Lancer l’application Java
Q58. Le volume db_data:/var/lib/postgresql/data sert à :
A. Stocker les logs de docker
B. Rendre les données Postgres persistantes
C. Créer un réseau overlay
D. Accélérer le CPU
Q59. Démarrer tous les services en arrière-plan :
A. docker-compose run
B. docker-compose up -d
C. docker-compose start -f
D. docker-compose build -d
Q60. Arrêter et supprimer conteneurs/réseaux/volumes du projet :
A. docker-compose down
B. docker-compose stop
C. docker-compose rm
D. docker-compose kill
Q61. Lister les conteneurs associés au projet compose :
A. docker-compose ps
B. docker ps
C. docker-compose logs
D. docker-compose images
Q62. Suivre les logs d’un service précis (app) :
A. docker-compose logs -f app
B. docker-compose ps -f app
C. docker logs -f app
D. docker-compose follow app
✅ CORRIGÉ (Réponses)
1B, 2B, 3B, 4A, 5B, 6B, 7C, 8C, 9B, 10C,
11B, 12B, 13B, 14C, 15B, 16B, 17A, 18B, 19B, 20A,
21C, 22A, 23B, 24B, 25B, 26B, 27A, 28C, 29B,
30B, 31B, 32A, 33B, 34A, 35A, 36B, 37B,
38B, 39B, 40B, 41B, 42A,
43B, 44A, 45C,
46A, 47C, 48B, 49A, 50A, 51B, 52A,
53B, 54C, 55B, 56C, 57A, 58B, 59B, 60A, 61A, 62A.
✅ QCM Kubernetes — Container Orchestration (Cours BD2C)
A) QCM (1 seule bonne réponse)
1) Kubernetes est principalement :
A. Un langage de programmation
B. Un système d’orchestration de conteneurs
C. Une base de données distribuée
D. Un serveur web
2) Kubernetes est maintenu aujourd’hui par :
A. Microsoft
B. Amazon
C. CNCF
D. Docker Inc
3) Kubernetes automatise :
A. Déploiement et scaling
B. Load balancing
C. Auto-réparation
D. Toutes les réponses
4) Dans Kubernetes, la plus petite unité déployable est :
A. Node
B. Pod
C. Service
D. Deployment
5) Un Pod peut contenir :
A. Un seul conteneur uniquement
B. Plusieurs conteneurs partageant réseau et stockage
C. Un Service et un ReplicaSet
D. Plusieurs nodes
6) Les Pods sont :
A. Persistants
B. Éphémères
C. Des machines physiques
D. Des services cloud
7) En production, on recommande d’utiliser :
A. Pod directement
B. Deployment
C. NodePort uniquement
D. kubelet
8) Quel composant est le point d’entrée des appels kubectl ?
A. etcd
B. API Server
C. Scheduler
D. kube-proxy
9) Quel composant stocke l’état du cluster ?
A. kubelet
B. etcd
C. Controller Manager
D. ReplicaSet
10) Le Scheduler sert à :
A. Stocker les données
B. Gérer le réseau
C. Attribuer des pods aux nodes
D. Exposer les services
11) Le kubelet :
A. Tourne sur le control plane uniquement
B. Tourne sur chaque node et gère les pods
C. Expose les pods au public
D. Remplace etcd
12) kube-proxy s’occupe surtout :
A. De la base de données
B. Du routage réseau et load balancing des services
C. De l’exécution des conteneurs
D. De la planification des pods
13) Le container runtime sert à :
A. Planifier les pods
B. Exécuter les conteneurs
C. Remplacer les services
D. Créer les namespaces
14) Un ReplicaSet sert à :
A. Faire du rollback
B. Garantir un nombre identique de pods
C. Exposer les pods à l’extérieur
D. Gérer la base etcd
15) Un Deployment :
A. Crée automatiquement des ReplicaSets
B. Permet rollout et rollback
C. Gère le scaling
D. Toutes les réponses
16) Un Service sert à :
A. Mettre à jour les pods
B. Exposer les pods
C. Créer des nodes
D. Stocker l’état
17) Le type de Service par défaut est :
A. NodePort
B. ClusterIP
C. LoadBalancer
D. ExternalName
18) NodePort expose un service :
A. Uniquement dans le cluster
B. Sur chaque node via un port spécifique
C. Avec un load balancer cloud automatiquement
D. Uniquement sur le control plane
19) La plage des ports NodePort est :
A. 80–443
B. 1024–65535
C. 30000–32767
D. 1–1024
20) LoadBalancer :
A. N’existe que sur bare-metal
B. Intègre des load balancers externes (cloud)
C. Est le type par défaut
D. Remplace kube-proxy
21) Un Namespace sert à :
A. Remplacer etcd
B. Faire du partitionnement logique du cluster
C. Remplacer un Service
D. Exécuter les conteneurs
B) QCM à réponses multiples (plusieurs bonnes réponses)
22) Kubernetes automatise :
(Choisir toutes les bonnes réponses)
A. Déploiement
B. Scaling
C. Load balancing
D. Auto-réparation
E. Compilation du code
23) Font partie du Control Plane :
A. API Server
B. etcd
C. Scheduler
D. kubelet
E. Controller Manager
24) Font partie des composants Node :
A. kubelet
B. kube-proxy
C. container runtime
D. etcd
25) Commandes utiles pour un Pod :
A. kubectl get pods
B. kubectl describe pod ...
C. kubectl logs ...
D. kubectl exec -it ... -- bash
E. kubectl rollback pod ...
26) Commandes liées au rollout d’un Deployment :
A. kubectl rollout status ...
B. kubectl rollout undo ...
C. kubectl restart ...
D. kubectl apply -f ...
27) Bonnes pratiques du cours :
A. Utiliser Deployments
B. Toujours utiliser latest
C. Versionner les images
D. Utiliser Pods directement en production
28) Les ressources “core” vues dans le cours :
A. Pod
B. ReplicaSet
C. Deployment
D. Service
E. Ingress
29) Un Service a besoin de :
A. selector
B. ports
C. replicas
D. type
30) Un Deployment contient :
A. replicas
B. selector
C. template
D. ports obligatoirement
C) Vrai / Faux
31) V/F : Un Pod est persistant et garde toujours la même IP.
Vrai
Faux
32) V/F : Le Deployment est recommandé en production plutôt qu’un Pod direct.
Vrai
Faux
33) V/F : etcd est une base clé-valeur distribuée.
Vrai
Faux
34) V/F : kubelet tourne sur chaque worker node.
Vrai
Faux
35) V/F : kube-proxy gère le routage réseau des services.
Vrai
Faux
36) V/F : NodePort est un service interne uniquement.
Vrai
Faux
37) V/F : LoadBalancer est surtout utile sur cloud.
Vrai
Faux
38) V/F : Un ReplicaSet est généralement géré par un Deployment.
Vrai
Faux
D) Questions pièges / examen
39) Pourquoi un Service est-il nécessaire dans Kubernetes ?
A. Parce que les pods ont des IP stables
B. Parce que les pods changent souvent (éphémères)
C. Parce que etcd n’est pas fiable
D. Parce que kubelet ne fonctionne pas sans Service
40) Quel est le meilleur choix pour déployer nginx en production ?
A. Pod nginx avec nginx:latest
B. Deployment nginx avec nginx:1.25
C. ReplicaSet nginx avec nginx:latest
D. Service LoadBalancer seul
✅ CORRECTION
A) QCM (1 réponse)
1. B
2. C
3. D
4. B
5. B
6. B
7. B
8. B
9. B
10. C
11. B
12. B
13. B
14. B
15. D
16. B
17. B
18. B
19. C
20. B
21. B
B) Réponses multiples
22. A B C D
23. A B C E
24. A B C
25. A B C D
26. A B B? (Non) → A B (+ D est vrai mais pas rollout spécifique)
27. A C
28. A B C D
29. A B D
30. A B C
C) Vrai/Faux
31. Faux
32. Vrai
33. Vrai
34. Vrai
35. Vrai
36. Faux
37. Vrai
38. Vrai
D) Pièges
39. B
40. B
✅ QCM COMPLET – CI/CD (GitLab, Docker, Helm, Sonar)
📌 Consigne
➡️Choisis une seule bonne réponse (sauf si indiqué “plusieurs réponses”).
1) CI signifie :
A. Continuous Internet
B. Continuous Integration
C. Continuous Install
D. Cloud Integration
✅ Réponse : B
2) Le principe principal de la CI est :
A. Faire des commits rares mais gros
B. Faire des commits fréquents et automatiser build + tests
C. Déployer directement en prod
D. Supprimer les tests
✅ Réponse : B
3) Un bénéfice direct de la CI est :
A. Augmenter les conflits de merge
B. Réduire les conflits de merge
C. Supprimer Git
D. Ne plus faire de tests
✅ Réponse : B
4) Continuous Delivery signifie :
A. Le code est toujours déployé automatiquement en prod
B. Le code est toujours déployable mais prod = validation humaine
C. Le code est jamais déployable
D. Le code est livré sans tests
✅ Réponse : B
5) Continuous Deployment signifie :
A. Déploiement automatique dès que les tests passent
B. Déploiement manuel seulement
C. Déploiement une fois par an
D. Déploiement sans build
✅ Réponse : A
6) Le fichier GitLab CI doit s’appeler :
A. [Link]
B. [Link]
C. .[Link]
D. .[Link]
✅ Réponse : C
7) Dans GitLab CI, un pipeline est composé de :
A. stages, jobs, runners, artifacts, environments
B. uniquement des tests
C. uniquement Docker
D. uniquement Kubernetes
✅ Réponse : A
8) Les stages servent à :
A. Définir l’ordre des grandes étapes (build/test/deploy)
B. Stocker les images Docker
C. Remplacer Git
D. Écrire du code Java
✅ Réponse : A
9) Un job dans GitLab CI est :
A. Une étape générale
B. Une tâche exécutée dans un stage
C. Un commit Git
D. Un container Docker
✅ Réponse : B
10) Les runners sont :
A. Les développeurs
B. Les machines qui exécutent les jobs
C. Les branches Git
D. Les fichiers artifacts
✅ Réponse : B
11) Les artifacts sont :
A. Des fichiers produits par un job (jar, rapports tests, etc.)
B. Des erreurs Git
C. Des branches
D. Des containers Kubernetes
✅ Réponse : A
12) Les environments représentent :
A. Un stage build
B. Des environnements dev/staging/prod
C. Un runner
D. Un job test
✅ Réponse : B
13) Bonne pratique CI/CD concernant les commits :
A. Commits longs et rares
B. Commits courts et fréquents
C. Pas de commits
D. Un commit par semestre
✅ Réponse : B
14) Bonne pratique CI/CD concernant les pipelines :
A. Pipelines lents
B. Pipelines rapides + caching efficace
C. Pipelines sans tests
D. Pipelines manuels
✅ Réponse : B
15) Un test unitaire est :
A. Un test qui vérifie une petite partie du code (fonction, classe)
B. Un test Kubernetes
C. Un test Docker Registry
D. Un test SonarQube
✅ Réponse : A
16) Dans l’exemple Maven, la commande pour exécuter les tests est :
A. mvn deploy
B. mvn clean install
C. mvn test
D. mvn docker
✅ Réponse : C
17) Le rapport JUnit dans GitLab est généralement stocké via :
A. artifacts reports junit
B. helm upgrade
C. docker push
D. sonar login
✅ Réponse : A
18) SonarQube sert à :
A. Construire des images Docker
B. Déployer sur Kubernetes
C. Analyser la qualité du code
D. Héberger des runners
✅ Réponse : C
19) Pour SonarQube, on utilise souvent :
A. SONAR_HOST_URL et SONAR_TOKEN
B. DOCKER_TLS_CERTDIR
C. KUBE_NAMESPACE
D. CI_COMMIT_BRANCH
✅ Réponse : A
20) Dans le cours, le job Sonar est exécuté :
A. Toujours sur main
B. Seulement sur merge_requests
C. Seulement sur staging
D. Jamais
✅ Réponse : B
21) GitLab Registry est utilisé pour :
A. Stocker des bases de données
B. Stocker des images Docker
C. Stocker des commits Git
D. Stocker des logs Kubernetes
✅ Réponse : B
22) Le format de l’URL du registry GitLab est :
A. [Link]/<project>
B. [Link]/<group>/<project>
C. [Link]/<namespace>
D. [Link]/<project>
✅ Réponse : B
23) Pour se connecter au registry dans GitLab CI on utilise :
A. login = root
B. login = gitlab-ci-token + password = CI_JOB_TOKEN
C. login = admin + password = admin
D. login = docker + password = docker
✅ Réponse : B
24) Le tag $CI_COMMIT_SHA correspond à :
A. Le nom du développeur
B. Le hash du commit (version unique)
C. Le nom du projet
D. Le nom du namespace Kubernetes
✅ Réponse : B
25) Docker-in-Docker (docker:dind) sert à :
A. Exécuter Docker dans le job GitLab CI
B. Remplacer Kubernetes
C. Exécuter SonarQube
D. Compiler du Java
✅ Réponse : A
26) Helm est utilisé pour :
A. Tester du code Java
B. Déployer sur Kubernetes
C. Scanner les dépendances
D. Faire des commits Git
✅ Réponse : B
27) Le rôle de KUBE_CONFIG est :
A. Stocker le token SonarQube
B. Stocker le kubeconfig (accès au cluster)
C. Stocker l’image Docker
D. Stocker les artifacts
✅ Réponse : B
28) KUBE_NAMESPACE sert à :
A. Choisir le namespace Kubernetes cible
B. Choisir le runner GitLab
C. Choisir le stage test
D. Choisir le registry
✅ Réponse : A
29) La commande principale de déploiement Helm est :
A. helm upgrade --install
B. helm push
C. helm build
D. helm test
✅ Réponse : A
30) Dans le pipeline complet du cours, l’ordre correct est :
A. Deploy → Docker → Test → Build
B. Build → Test → Quality → Docker → Deploy
C. Test → Build → Deploy → Quality
D. Docker → Deploy → Build → Test
✅ Réponse : B
⭐ BONUS : Questions “plusieurs réponses”
31) (Plusieurs réponses) Une bonne pipeline CI/CD doit inclure :
A. Tests unitaires
B. Scan qualité
C. Déploiement automatisé
D. Aucun test
✅ Réponses : A, B, C
32) (Plusieurs réponses) Les éléments GitLab CI/CD sont :
A. stages
B. jobs
C. runners
D. commits Git
✅ Réponses : A, B, C
33) (Plusieurs réponses) Les bonnes pratiques CI/CD incluent :
A. Commits courts et fréquents
B. Scan dépendances
C. Monitoring post-déploiement
D. Pipeline lent
✅ Réponses : A, B, C