Les Forges Éternelles
CI/CD, plateformes Git et premiers pas vers l'automatisation
La lourde porte de métal s'ouvre dans un grondement de rouages. Une bouffée d'air chaud te frappe le visage, chargée d'odeurs de métal fondu et de magie ancienne. Devant toi s'étend la Vallée des Forges Éternelles, un paysage titanesque de cheminées crachant des flammes bleues, de convoyeurs enchantés transportant des parchemins d'un atelier à l'autre, et de golems de fer qui martèlent, testent et assemblent sans relâche. Chaque forge est reliée aux autres par des conduits lumineux, formant un réseau palpitant d'énergie.
Le Maître Archiviste contemple le spectacle avec une admiration non dissimulée.
« Bienvenue dans les Forges Éternelles, Maître Archiviste. Ici, les parchemins ne sont plus vérifiés à la main. Des constructs enchantés les testent automatiquement dès qu'ils arrivent. Si un parchemin contient une erreur, la forge le rejette avant qu'il ne puisse corrompre les Archives. S'il est parfait, la forge le déploie directement dans les salles du royaume. Ce système s'appelle CI/CD, l'Intégration Continue et le Déploiement Continu. C'est la prochaine étape de ton voyage. »
Qu'est-ce que le CI/CD ?
Le CI/CD est un ensemble de pratiques qui automatisent la vérification et la livraison du code. Imagine une forge enchantée : dès qu'un Archiviste envoie un parchemin, la forge le prend en charge automatiquement.
CI - Intégration Continue (Continuous Integration)
L'Intégration Continue signifie que chaque modification est intégrée fréquemment dans le dépôt commun, et qu'à chaque intégration, des tests automatiques vérifient que rien n'est cassé.
Concrètement :
- Tu fais un commit et tu le push
- Un système automatique récupère ton code
- Il lance les tests
- Il te dit si tout va bien ou si quelque chose est cassé
« Dans les Forges Éternelles, chaque parchemin déposé est immédiatement inspecté par les golems testeurs. Si un mot est mal formé, si une incantation est incorrecte, tu le sais en quelques minutes, pas en quelques semaines. C'est ça, l'Intégration Continue. »
CD - Livraison/Déploiement Continu
Le CD a deux significations proches :
- Continuous Delivery (Livraison Continue) : le code testé est prêt à être déployé à tout moment, mais un humain décide quand
- Continuous Deployment (Déploiement Continu) : le code testé est déployé automatiquement en production, sans intervention humaine
« La Livraison Continue, c'est quand la forge prépare le parchemin pour l'envoi et attend ton ordre. Le Déploiement Continu, c'est quand la forge envoie directement le parchemin aux bibliothèques du royaume dès qu'il passe les tests. Les deux approches ont leur place selon le niveau de confiance que tu as dans tes tests. »
Pourquoi le CI/CD est important
Sans CI/CD, voici ce qui arrive souvent :
- Tu travailles des semaines sur une fonctionnalité
- Tu intègres ton code avec celui des autres
- Tout est cassé
- Tu passes des jours à chercher quel changement a causé le problème
Avec le CI/CD :
- Tu intègres souvent (plusieurs fois par jour)
- Les tests tournent à chaque push
- Si quelque chose casse, tu le sais immédiatement
- Le coupable est forcément dans les dernières modifications (quelques lignes, pas des milliers)
Le concept de pipeline CI/CD
Un pipeline est une série d'étapes automatiques que ton code traverse. Pense à une chaîne de forges, chacune spécialisée dans une tâche.
Les étapes classiques
Code --> [Build] --> [Test] --> [Deploy] - Build (Construction) : le code est compilé ou assemblé
- Test (Vérification) : les tests automatiques sont exécutés
- Deploy (Déploiement) : le code validé est mis en production
Chaque étape doit réussir pour que la suivante commence. Si le Build échoue, on ne teste pas. Si les Tests échouent, on ne déploie pas.
Un pipeline plus réaliste
Dans la pratique, un pipeline peut avoir plus d'étapes :
Code --> [Lint] --> [Build] --> [Tests unitaires] --> [Tests d'intégration] --> [Staging] --> [Production] - Lint : vérification du style et de la syntaxe du code
- Tests unitaires : tests rapides sur des fonctions individuelles
- Tests d'intégration : tests qui vérifient que les composants fonctionnent ensemble
- Staging : déploiement dans un environnement de pré-production
- Production : déploiement final pour les utilisateurs
« Chaque forge de la Vallée a sa spécialité. La première vérifie la forme des runes. La deuxième teste leur pouvoir. La troisième les assemble. La quatrième les envoie aux bibliothèques. Si une seule forge rejette le parchemin, tout s'arrête. C'est la chaîne de confiance des Forges Éternelles. »
Les plateformes Git - Les grandes Forges du royaume
Pour utiliser le CI/CD, tu as besoin d'une plateforme qui héberge ton code et exécute les pipelines. Ce sont les grandes Forges du royaume, chacune avec ses particularités.
GitHub - La Forge du Peuple
GitHub est la plateforme la plus populaire au monde pour héberger du code.
- Propriétaire : Microsoft (depuis 2018)
- CI/CD : GitHub Actions (intégré, puissant, gratuit pour les projets open source)
- Points forts : communauté immense, marketplace d'actions, GitHub Pages, Copilot
- Idéal pour : projets open source, collaboration publique, portfolios de développeurs
C'est la plateforme que nous utiliserons dans les prochaines quêtes.
GitLab - La Forge Autonome
GitLab est une plateforme complète avec un CI/CD intégré très puissant.
- CI/CD : GitLab CI/CD (intégré nativement, très mature)
- Points forts : auto-hébergeable (tu peux installer ta propre Forge), tout-en-un (issues, CI/CD, registre Docker, monitoring)
- Idéal pour : entreprises qui veulent tout contrôler, projets privés, DevOps complet
Bitbucket - La Forge de la Guilde Atlassian
Bitbucket est la plateforme Git de l'écosystème Atlassian (Jira, Confluence, Trello).
- CI/CD : Bitbucket Pipelines
- Points forts : intégration native avec Jira, bon pour les petites équipes
- Idéal pour : équipes qui utilisent déjà Jira/Confluence
Comparaison rapide
| Caractéristique | GitHub | GitLab | Bitbucket |
|---|---|---|---|
| CI/CD intégré | GitHub Actions | GitLab CI/CD | Pipelines |
| Auto-hébergeable | Enterprise (payant) | Oui (gratuit) | Data Center (payant) |
| Dépôts privés gratuits | Oui | Oui | Oui (5 utilisateurs max) |
| Communauté | La plus grande | Grande | Moyenne |
| Écosystème | Actions Marketplace | Tout intégré | Atlassian (Jira, etc.) |
« Il existe plusieurs grandes Forges dans le royaume. La Forge du Peuple (GitHub) est la plus fréquentée - c'est là que se retrouvent la plupart des Archivistes du monde. La Forge Autonome (GitLab) permet de bâtir ta propre forge indépendante. La Forge d'Atlassian (Bitbucket) s'intègre parfaitement avec les outils de gestion des grandes guildes. Choisis ta forge selon tes besoins, mais apprends-en au moins une à fond. »
Créer un compte GitHub
GitHub sera notre forge de référence pour la suite du cours. Voici comment créer ton compte.
- Va sur github.com
- Clique sur Sign up
- Entre ton adresse e-mail
- Choisis un mot de passe solide
- Choisis un nom d'utilisateur (ce sera ton identité publique de développeur !)
- Vérifie ton e-mail
Choisis un nom d'utilisateur professionnel - il apparaîtra sur ton profil public et c'est ce que les recruteurs verront !
Créer un dépôt sur GitHub
Une fois connecté à GitHub :
- Clique sur le + en haut à droite, puis New repository
- Donne un nom à ton dépôt (ex :
mes-chroniques) - Ajoute une description (optionnel mais recommandé)
- Choisis Public ou Private
- Tu peux cocher "Add a README file", "Add .gitignore", "Choose a license"
- Clique sur Create repository
Les fichiers spéciaux de GitHub
- README.md : la page d'accueil de ton dépôt. C'est le premier fichier que les visiteurs voient. Écris-le en Markdown
- LICENSE : définit les droits d'utilisation de ton code (MIT, GPL, Apache, etc.)
- .gitignore : liste les fichiers que Git doit ignorer (tu connais déjà grâce à la quête sur les sceaux magiques !)
Connecter un dépôt local à GitHub
Tu as un dépôt Git local et tu veux l'envoyer vers GitHub ? Voici comment relier les deux.
Ajouter un remote
git remote add origin https://github.com/TON-NOM/mon-depot.git Tu connais déjà git remote grâce à la quête 09 (Les Portails Distants). Ici, origin pointe vers GitHub au lieu d'un dépôt local.
Pousser pour la première fois
git push -u origin main L'option -u (ou --set-upstream) crée un lien de suivi entre ta branche locale main et la branche distante origin/main. Après ce premier push, tu pourras simplement taper git push sans préciser la destination.
Vérifier la connexion
git remote -v Tu devrais voir quelque chose comme :
origin https://github.com/TON-NOM/mon-depot.git (fetch)
origin https://github.com/TON-NOM/mon-depot.git (push) Authentification : SSH vs HTTPS
Pour communiquer avec GitHub, tu as deux méthodes d'authentification.
HTTPS - La méthode simple
git remote add origin https://github.com/TON-NOM/mon-depot.git - Tu utilises ton nom d'utilisateur et un token d'accès personnel (Personal Access Token)
- Facile à configurer
- GitHub ne supporte plus les mots de passe classiques depuis 2021 - il faut un token
SSH - La méthode des clés
git remote add origin git@github.com:TON-NOM/mon-depot.git - Tu génères une paire de clés (publique + privée) sur ta machine
- Tu ajoutes la clé publique à ton compte GitHub
- Plus besoin de taper quoi que ce soit à chaque push/pull
Générer une clé SSH
# Générer la paire de clés
ssh-keygen -t ed25519 -C "ton@email.com"
# Afficher la clé publique (à copier sur GitHub)
cat ~/.ssh/id_ed25519.pub Ensuite, sur GitHub : Settings > SSH and GPG keys > New SSH key > colle ta clé publique.
Quelle méthode choisir ?
| Critère | HTTPS | SSH |
|---|---|---|
| Facilité de mise en place | Plus simple | Configuration initiale nécessaire |
| Authentification | Token à chaque fois (ou credential manager) | Automatique après configuration |
| Utilisation quotidienne | Peut demander le token | Transparente |
| Recommandé pour | Débuter rapidement | Usage régulier |
« Les clés SSH sont comme des sceaux personnels - une fois gravés, ils t'identifient sans que tu aies besoin de décliner ton nom à chaque passage. Pour un Archiviste qui pousse des parchemins plusieurs fois par jour, c'est un gain de temps considérable. »
Exercice pratique - Envoyer tes chroniques à la Forge
Envoie tes chroniques à la Forge Éternelle :
- Crée un dépôt
chroniques-forgeavec git init - Crée un
README.mdet fais un premier commit - Ajoute deux autres fichiers avec un commit chacun (au moins 3 commits au total)
- Crée un dépôt bare
forge-eternelle.git(ta Forge locale) - Ajoute-le comme remote
origin - Pousse tes chroniques vers la Forge avec git push -u origin main
- Lance le script de vérification
Étape 1 - Créer tes chroniques
mkdir chroniques-forge
cd chroniques-forge
git init -b main Étape 2 - Écrire le premier parchemin
cat > README.md << 'EOF'
# Chroniques de la Forge
Bienvenue dans mes chroniques - un recueil de parchemins
envoyés aux Forges Éternelles pour vérification et archivage.
## Contenu
- Chronique du premier jour
- Notes de l'apprenti forgeron
EOF
git add README.md
git commit -m "Créer le README des chroniques de la Forge" Étape 3 - Ajouter d'autres parchemins
cat > chronique-01.txt << 'EOF'
Chronique du Premier Jour aux Forges
Aujourd'hui j'ai découvert les Forges Éternelles.
Les constructs enchantés testent chaque parchemin automatiquement.
Le CI vérifie, le CD déploie. La chaîne ne s'arrête jamais.
EOF
git add chronique-01.txt
git commit -m "Ajouter la chronique du premier jour aux Forges" cat > notes-forgeron.txt << 'EOF'
Notes de l'Apprenti Forgeron
Les trois grandes Forges du royaume :
- GitHub : la Forge du Peuple
- GitLab : la Forge Autonome
- Bitbucket : la Forge d'Atlassian
Un pipeline CI/CD :
Build -> Test -> Deploy
EOF
git add notes-forgeron.txt
git commit -m "Ajouter les notes sur les forges et le pipeline CI/CD" Étape 4 - Créer la Forge (dépôt bare)
cd ..
git init -b main --bare forge-eternelle.git Un dépôt bare est un dépôt Git sans répertoire de travail - exactement comme un serveur GitHub ou GitLab. Il ne contient que les données Git, pas les fichiers de travail.
Étape 5 - Connecter et pousser
cd chroniques-forge
git remote add origin ../forge-eternelle.git
git push -u origin main Étape 6 - Vérifier
# Voir le remote configuré
git remote -v
# Voir le log avec les références distantes
git log --oneline --all Tu devrais voir origin/main à côté de ton dernier commit.
Étape 7 - Lancer la vérification
bash verifier.sh .\verifier.ps1 Récapitulatif des commandes
| Commande | Description |
|---|---|
git remote add origin <url> | Ajouter un dépôt distant nommé origin |
git push -u origin main | Pousser et créer le lien de suivi |
git push | Pousser (après le premier push avec -u) |
git remote -v | Afficher les remotes configurés |
git init --bare nom.git | Créer un dépôt bare (serveur) |
ssh-keygen -t ed25519 | Générer une paire de clés SSH |
Récapitulatif des concepts
| Concept | Description |
|---|---|
| CI (Intégration Continue) | Intégrer et tester automatiquement à chaque push |
| CD (Livraison/Déploiement Continu) | Déployer automatiquement le code validé |
| Pipeline | Chaîne d'étapes automatiques (build, test, deploy) |
| GitHub | Plateforme Git la plus populaire, avec GitHub Actions |
| GitLab | Plateforme avec CI/CD intégré, auto-hébergeable |
| Bitbucket | Plateforme Git de l'écosystème Atlassian |
| Dépôt bare | Dépôt sans répertoire de travail (serveur) |
| SSH vs HTTPS | Deux méthodes d'authentification vers les plateformes |
Tu regardes tes chroniques traverser le conduit lumineux et atterrir dans la Forge Éternelle. Les golems de métal s'activent immédiatement - ils inspectent, classent et archivent chaque parchemin avec une précision mécanique.
Le Maître Archiviste pose une main sur ton épaule.
« Tu viens d'accomplir ton premier envoi aux Forges. Tes parchemins sont désormais en sécurité, dupliqués et accessibles depuis n'importe quel avant-poste du royaume. C'est le fondement de tout ce qui va suivre. »
Il désigne les forges les plus profondes de la vallée, là où des flammes plus intenses illuminent des mécanismes encore plus complexes.
« Maintenant que tu sais envoyer tes chroniques aux Forges, il est temps d'apprendre à commander les constructs qui y travaillent. Dans la prochaine quête, tu écriras tes premiers plans de forge - ce que le monde moderne appelle des fichiers de pipeline. Les Forges n'attendent plus que tes ordres. »