Arc 4 Quête 15

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)

Un Archiviste qui attend des semaines pour envoyer ses parchemins aux Forges accumule les erreurs comme la poussière s'accumule sur un vieux grimoire. Un Archiviste qui envoie chaque jour détecte les problèmes quand ils sont encore petits et faciles à corriger.

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]
  1. Build (Construction) : le code est compilé ou assemblé
  2. Test (Vérification) : les tests automatiques sont exécutés
  3. 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.

  1. Va sur github.com
  2. Clique sur Sign up
  3. Entre ton adresse e-mail
  4. Choisis un mot de passe solide
  5. Choisis un nom d'utilisateur (ce sera ton identité publique de développeur !)
  6. 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 :

  1. Clique sur le + en haut à droite, puis New repository
  2. Donne un nom à ton dépôt (ex : mes-chroniques)
  3. Ajoute une description (optionnel mais recommandé)
  4. Choisis Public ou Private
  5. Tu peux cocher "Add a README file", "Add .gitignore", "Choose a license"
  6. 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 !)

Un dépôt sans README, c'est comme une bibliothèque sans catalogue. Les visiteurs ne savent pas ce qu'ils trouveront à l'intérieur. Toujours ajouter un README.

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 :

  1. Crée un dépôt chroniques-forge avec git init
  2. Crée un README.md et fais un premier commit
  3. Ajoute deux autres fichiers avec un commit chacun (au moins 3 commits au total)
  4. Crée un dépôt bare forge-eternelle.git (ta Forge locale)
  5. Ajoute-le comme remote origin
  6. Pousse tes chroniques vers la Forge avec git push -u origin main
  7. 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. »