TP1re année11 livrables
Déployer ton portfolio en ligne (Vercel)
Ton portfolio est sur ta machine et sur GitHub… mais personne ne peut le voir. Aujourd'hui, on lui donne une vraie adresse web publique — en quelques clics, avec Vercel. Prêt à montrer au jury du BTS blanc.
Par Josselyn C., prof de BTS SIO. Publié le , mis à jour le .
- Objectif
- comprendre le déploiement, mettre ton portfolio en ligne avec Vercel et activer le déploiement continu
- On manipule
- Vercel (dans le navigateur) connecté à ton dépôt GitHub portfolio
- Pré-requis
- avoir ton portfolio sur GitHub (séance Git)
- Pour qui
- SLAM et SISR, 1re année
- Durée
- environ 3 h
Compétences : C1.3 Développer la présence en ligne de l'organisation, C1.5 Mettre à disposition des utilisateurs un service informatique
Hébergement gratuit pour un projet perso : ton portfolio aura une URL publique, sans serveur à gérer.
Avant de commencer
Pourquoi déployer change tout
Jusqu'ici, ton portfolio s'ouvre uniquement sur ta machine (localhost). Pour qu'un recruteur, un jury ou un camarade le voie, il faut le déployer : le mettre sur un serveur accessible depuis Internet, avec une vraie adresse (une URL). Avant, c'était compliqué (louer un serveur, le configurer). Aujourd'hui, des plateformes comme Vercel le font en quelques clics, gratuitement pour un projet perso — et à chaque fois que tu pousses sur GitHub, ton site se met à jour tout seul.
Là où on en est dans la grande chaîne
Depuis le début de l'année, tu as construit un outillage complet. Aujourd'hui, on pose la dernière brique : rendre tout ça public.
La chaîne complète du dev web. Tu maîtrises déjà les 4 premières briques. Aujourd'hui : les 2 dernières (Vercel → URL).
Ce que tu sauras faire à la fin
| Notion | Tu sauras… |
|---|---|
| Le déploiement | comprendre comment un site passe en ligne |
| Site statique / dynamique | savoir pourquoi ton portfolio se déploie instantanément |
| Vercel | connecter ton GitHub et déployer ton portfolio |
| L'URL publique + HTTPS | obtenir, partager et sécuriser l'adresse de ton site |
| Le déploiement continu | un push GitHub = une mise à jour automatique |
| Previews & rollback | tester une version avant publication, revenir en arrière |
0. C'est quoi « déployer » ?
Déployer (ou « mettre en production »), c'est publier ton site sur un serveur accessible depuis Internet, pour que tout le monde puisse l'ouvrir avec une adresse, sans avoir tes fichiers.
Déployer = déplacer une copie de ton site sur un serveur toujours allumé, accessible par tous.
| Mot | Définition |
|---|---|
| Déployer | publier un site sur un serveur accessible en ligne |
| Hébergement | le service qui fait tourner ton site sur ses serveurs |
| Serveur | un ordinateur toujours allumé qui sert les pages aux visiteurs |
| Vercel | une plateforme qui déploie ton site depuis GitHub, en quelques clics |
| URL / domaine | l'adresse web publique de ton site |
Flag A1
Checkpoint
Quelle est la différence entre ouvrir ton site en localhost et l'avoir déployé en ligne ? Pourquoi le déploiement est-il indispensable pour ton portfolio ?
Rends : ta réponse (3-4 lignes).
1. Site statique vs site dynamique
Avant de déployer, comprends ce que tu déploies. Tous les sites ne se ressemblent pas, et ça change tout pour la mise en ligne.
Deux familles de sites
Un site statique, ce sont des fichiers déjà prêts (HTML, CSS, images). Le serveur n'a qu'à les envoyer tels quels au navigateur. Rien à calculer.
Un site dynamique, lui, fabrique la page à chaque visite : le serveur exécute du code, va chercher des données dans une base, et compose le HTML à la volée (un fil d'actu, un panier d'achat, ton compte personnalisé…).
Statique : le serveur renvoie un fichier déjà écrit. Dynamique : le serveur calcule la page et interroge une base.
| Critère | Statique | Dynamique |
|---|---|---|
| Contenu | fixe (mêmes fichiers pour tous) | généré à la demande, personnalisé |
| Technos | HTML, CSS, JS | + serveur (Node, PHP…) + base de données |
| Exemple | portfolio, blog, vitrine | réseau social, boutique, webmail |
| Temps de 1re réponse (TTFB) | 20-80 ms — fichier servi depuis le nœud CDN le plus proche | 200-800 ms — serveur exécute du code + requête BDD avant de répondre |
| Déploiement | instantané, rien à exécuter | plus lourd (serveur + base à faire tourner) |
| Coût infra | gratuit sur les grandes plateformes (Vercel, GitHub Pages) | serveur + base de données = coût mensuel (même un petit VPS = ~5-10 €/mois) |
Flag A2
Checkpoint
Ton portfolio est-il statique ou dynamique ? Justifie en une phrase. Donne un exemple de site dynamique que tu utilises tous les jours.
Rends : ta réponse.
2. C'est quoi Vercel ?
Vercel est une plateforme de déploiement. Tu lui connectes ton dépôt GitHub, et elle s'occupe de tout : prendre ton code, le publier sur ses serveurs, et te donner une URL. À chaque fois que tu pousses du nouveau code sur GitHub, Vercel redéploie automatiquement.
GitHub → Vercel → URL publique. Tu pousses ton code, Vercel le met en ligne automatiquement.
Vercel n'est pas seul — la culture générale
D'autres plateformes font la même chose. Tu n'as pas à les utiliser aujourd'hui, mais il faut savoir qu'elles existent (un jury peut te poser la question).
| Plateforme | Spécialité | Offre gratuite (Hobby/Free) | Quand choisir |
|---|---|---|---|
| Vercel | sites & apps modernes (Next.js, SSR, statique) | 100 GB bande passante/mois · builds illimités · 6 000 min de build/mois | portfolio, démo React/Next.js, projet BTS — le meilleur tableau de bord pédagogique |
| Netlify | sites statiques, JAMstack, formulaires et fonctions serverless intégrés | 100 GB bande passante/mois · 300 min de build/mois | si tu veux des formulaires sans backend ou des fonctions serverless natives Netlify |
| GitHub Pages | sites statiques hébergés directement dans GitHub | 1 GB stockage · 100 GB bande passante/mois · max 10 builds/heure | portfolio ultra-simple ; aucune config hors GitHub ; limites basses pour un projet avec beaucoup de médias |
Flag A3
Checkpoint
Avec tes mots : que fait Vercel pour toi, et quel est le lien avec GitHub ? Cite une plateforme concurrente.
Rends : ta réponse.
3. Créer ton compte Vercel
Le plus simple : se connecter avec GitHub (comme ça, Vercel voit déjà tes dépôts, sans config supplémentaire).
- Va sur vercel.com → clique « Sign Up » (en haut à droite).
- On te demande ton profil : choisis « Hobby » (l'offre gratuite, parfaite pour un portfolio).
- Choisis « Continue with GitHub ».
- GitHub te demande d'autoriser Vercel à accéder à ton compte → clique « Authorize Vercel ». (Vercel a besoin de lire tes dépôts pour les déployer.)
- Tu arrives sur le Dashboard (tableau de bord) Vercel : c'est ta base de pilotage.
Flag B1
Production
Crée ton compte Vercel en te connectant avec GitHub.
Rends : confirme que Vercel est bien connecté à ton compte GitHub (tu vois tes dépôts proposés à l'import).
4. Importer ton portfolio
« Importer » = dire à Vercel quel dépôt GitHub tu veux déployer.
- Sur le Dashboard, clique « Add New… » → « Project » (bouton en haut à droite).
- Vercel affiche la liste « Import Git Repository » : tes dépôts GitHub.
- Trouve
portfoliodans la liste et clique « Import » à côté. - Vercel ouvre l'écran de configuration. Il détecte le type de projet. Pour un site HTML/CSS simple, le « Framework Preset » doit être sur « Other » — laisse le reste par défaut (pas de Build Command, pas d'Output Directory à toucher).
- Clique le gros bouton « Deploy ».
Flag B2
Production
Importe ton dépôt portfolio dans Vercel et lance le déploiement (« Deploy »).
Rends : le nom du projet importé et confirme que le déploiement a démarré.
5. Le déploiement en direct
Vercel travaille : il récupère ton code, le prépare, et le publie. Tu vois les logs défiler (les étapes du déploiement, en direct).
Cloning github.com/marc/portfolio...
Building...
Deploying...
✓ Deployment ready
Lire un log d'échec — cas réel annoté
Quand le déploiement passe en rouge, Vercel t'affiche le journal complet. Voici un log d'échec typique (mauvais Framework Preset) — chaque ligne décryptée :
[14:05:10] Cloning github.com/marc/portfolio...
[14:05:11] Running "npm run build"
[14:05:11] sh: npm: command not found
[14:05:11] Error: Command "npm run build" exited with 127
[14:05:11] ✗ Build failed
Flag C1
Vérification
Attends la fin du déploiement.
Rends : le statut final (Ready / Failed) et, si Failed, l'erreur lue dans les logs et comment tu l'as réglée.
6. Ton URL publique (et le cadenas HTTPS)
Vercel te donne une adresse, du type :
https://portfolio-marc.vercel.app
Le cadenas (HTTPS) est automatique
Tu as sûrement remarqué le petit cadenas à gauche de l'adresse. Il signifie que la connexion est en HTTPS : les données échangées entre le visiteur et ton site sont chiffrées, donc illisibles pour un curieux sur le réseau.
Et si… mes images ne s'affichent pas en ligne (mais marchaient en local)
Symptôme : le texte et le CSS s'affichent bien, mais les images apparaissent en icône cassée. Dans la console (F12 → onglet Console ou Network), tu vois des erreurs 404 sur les URL des images.
Cause : un chemin d'image absolu local — il pointe vers ton disque dur, inaccessible depuis Vercel :
<!-- MAUVAIS — ne marchera jamais en ligne -->
<img src="C:\Users\Marc\Documents\portfolio\img\photo.jpg">
Solution : utilise un chemin relatif :
<!-- BON — relatif depuis index.html -->
<img src="img/photo.jpg">
<!-- BON — absolu depuis la racine du SITE (pas du disque dur) -->
<img src="/img/photo.jpg">
expl.
img/photo.jpg — part depuis l'emplacement du fichier HTML. Si index.html est à la racine du projet et que le dossier img/ aussi, ce chemin fonctionne partout : en local ET sur Vercel, sans aucun changement.
/img/photo.jpg — le / initial = la racine du site, pas de ton disque dur. Fonctionne en déploiement, mais peut buguer si tu ouvres directement le fichier HTML en double-cliquant (sans serveur local), car le navigateur interpréte / comme la racine de ton système de fichiers.
Conseil pratique : utilise toujours le chemin relatif sans / initial (img/photo.jpg) — il est le plus portable dans les deux contextes.
Après correction : git add . && git commit -m "fix: chemins images relatifs" && git push. Vercel redéploie et les images apparaissent.
Flag B3
Production (ton site est en ligne !)
Récupère ton URL publique et ouvre-la depuis un autre appareil (téléphone en données mobiles, ou PC d'un camarade).
Rends : ton URL Vercel, et confirme que ton portfolio s'affiche en ligne avec le cadenas HTTPS.
7. Le déploiement continu
La magie : tu n'auras plus jamais à redéployer à la main. Vercel surveille ton dépôt GitHub. Dès que tu pousses un nouveau commit, il redéploie tout seul.
La boucle complète
| Tu fais… | …et automatiquement |
|---|---|
| 1. tu modifies ta page en local | — |
2. git add . + git commit -m "…" | — |
3. git push | → Vercel détecte le push et redéploie |
| 4. ~30 secondes plus tard | → ton site en ligne est à jour |
Sous le capot : comment Vercel sait qu'un push a eu lieu
La magie du redéploiement automatique repose sur un mécanisme précis : les webhooks GitHub.
Quand tu as connecté ton dépôt à Vercel, Vercel a enregistré auprès de GitHub un webhook : une URL secrète chez Vercel. Dès que tu fais git push, GitHub envoie automatiquement une requête HTTP POST à cette URL, contenant les infos du commit (branche, hash SHA-1, auteur, message). C'est ce signal — et lui seul — qui déclenche le déploiement chez Vercel.
| Étape | Ce qui se passe (côté Vercel) |
|---|---|
1. git push | GitHub reçoit le commit et publie l'évènement push |
| 2. GitHub → POST webhook → Vercel | Vercel reçoit le signal « nouveau commit sur main » avec le hash exact |
| 3. Vercel clone le repo au bon commit | récupère exactement la version demandée (pas forcément HEAD) |
| 4. Build (vide pour statique) + copie | tes fichiers sont mis en place sur tous les nœuds edge |
| 5. Purge CDN | les nœuds du réseau invalident leur cache et servent la nouvelle version |
| 6. Vercel → GitHub (commit status) | GitHub affiche ✓ vert ou ✗ rouge sur le commit dans l'onglet « Actions » |
Tu peux voir le webhook dans les paramètres GitHub de ton dépôt : Settings → Webhooks. Chaque push y est journalisé avec la réponse HTTP de Vercel (200 = tout va bien).
Le déploiement continu : un seul git push et la mise à jour en ligne se fait toute seule.
Erreur courante
ma modif n'apparaît pas en ligne
Symptôme : tu as poussé, mais l'URL Vercel affiche encore l'ancienne version.
Cause 1 — pas poussé : as-tu bien fait git commit ET git push ? Un commit local ne suffit pas, Vercel ne voit que GitHub.
Cause 2 — le cache : ton navigateur (ou le CDN de Vercel) garde l'ancienne page en mémoire pour aller plus vite.
Solution : vérifie sur GitHub que ton commit est bien là. Attends ~30 s. Force le rafraîchissement : Ctrl+F5 (Windows) ou Cmd+Shift+R (Mac). Teste en navigation privée pour ignorer le cache.
C'est quoi un CDN ?
et pourquoi Ctrl+F5 le déborde
CDN (Content Delivery Network) = un réseau de serveurs répartis dans le monde entier (le réseau Edge de Vercel compte plus de 30 nœuds — USA, Europe, Asie, Amérique du Sud…). Chaque nœud garde une copie locale de ton site.
Ce que ça change concrètement : un visiteur à Tokyo télécharge ton site depuis un serveur japonais, pas depuis un data center parisien. Le TTFB passe de ~300 ms (trajet transcontinental) à ~30-50 ms (serveur à 10 ms de route réseau). C'est pour ça que les sites Vercel sont réputés rapides.
Comment Vercel gère le cache : pour les fichiers statiques, Vercel envoie l'en-tête HTTP Cache-Control: public, max-age=31536000, immutable — le navigateur (et les nœuds CDN intermédiaires) peuvent garder le fichier 1 an en cache. Pour la page HTML, l'en-tête est plus court (max-age=0, must-revalidate), ce qui force le navigateur à vérifier si une nouvelle version existe à chaque visite.
Pourquoi une vieille version traîne après un push : quand tu redéploies, Vercel envoie un signal de purge de cache à tous ses nœuds. Cette propagation prend ~10-30 secondes. Pendant ce laps de temps, certains nœuds servent encore l'ancienne copie.
Ctrl+F5 (ou Cmd+Shift+R) : force le navigateur à ignorer son propre cache local et à re-télécharger depuis le CDN. Si même ça ne suffit pas, ouvre en navigation privée : le cache local est vierge, tu vois exactement ce que le serveur sert.
Cas pratique — une modif de A à Z, avec sorties exactes
Tu veux changer le titre de l'onglet de "Mon Portfolio" en "Portfolio de Marc — BTS SIO SLAM". Voici le déroulement complet, étape par étape, avec les sorties terminal.
1 — Modifier le fichier en local
Ouvre index.html dans ton éditeur et localise la balise <title> :
<!-- avant -->
<title>Mon Portfolio</title>
<!-- après -->
<title>Portfolio de Marc — BTS SIO SLAM</title>
expl.
Une seule ligne modifiée. Sauvegarde avec Ctrl+S (Windows) / Cmd+S (Mac). En local, la page recharge tout de suite avec le nouveau titre — mais personne d'autre ne le voit encore.
2 — Préparer et commiter
git add index.html
git commit -m "feat: update page title"
expl.
git add index.html — tu sélectionnes ce fichier pour le prochain commit (zone de staging). Bonne habitude : cibler le fichier précis plutôt que git add . pour maîtriser ce qui part dans le commit.
git commit -m "feat: …" — tu crées un instantané versionné. Le préfixe feat: = convention Conventional Commits (standard ouvert adopté par la majorité des équipes pro pour structurer les messages de commit).
[main 3a7f29c] feat: update page title
1 file changed, 1 insertion(+), 1 deletion(-)
expl.
[main 3a7f29c] — Git confirme le commit sur la branche main. 3a7f29c = les 7 premiers caractères du hash SHA-1 du commit (identifiant unique dans l'historique).
1 file changed, 1 insertion(+), 1 deletion(-) — une ligne supprimée (l'ancien titre), une ligne ajoutée (le nouveau). Git stocke les différences, pas les fichiers entiers — d'où la légèreté des commits.
3 — Pousser sur GitHub
git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 342 bytes | 342.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
To github.com/marc/portfolio.git
c4e2b1f..3a7f29c main -> main
expl.
342 bytes — le poids réel envoyé sur le réseau pour ce push. Un changement d'une ligne de titre pèse quelques centaines d'octets. Git compresse et n'envoie que le delta (pas le repo entier).
c4e2b1f..3a7f29c main → main — GitHub enregistre que la branche main est désormais au commit 3a7f29c. C'est à cet instant précis que GitHub envoie la notification webhook à Vercel et que le redéploiement démarre.
4 — Ce que Vercel fait (~30 secondes)
Dans l'onglet Deployments du dashboard, un nouveau déploiement « Building… » apparaît immédiatement. Clique dessus pour voir ses logs en direct :
[13:42:07] Cloning github.com/marc/portfolio (Branch: main, Commit: 3a7f29c)
[13:42:08] Cloning completed: 312ms
[13:42:09] No build command configured. Skipping build step.
[13:42:09] Uploading build outputs...
[13:42:11] Build Completed in /vercel/output [2s]
[13:42:21] ✓ Deployment completed
expl.
Cloning completed: 312ms — Vercel a récupéré ton repo en 0,3 seconde, car il ne clone que le dernier commit (clone superficiel — --depth=1 en Git, sans tout l'historique).
No build command configured. Skipping build step. — grâce au réglage « Other », pas de tentative de compilation. Il passe directement à la copie des fichiers. Pour un projet React qui compile (Vite, Webpack…), cette étape prendrait 30-120 secondes.
Build Completed in /vercel/output [2s] — 2 secondes de bout en bout pour un site statique. Le résultat sort dans le répertoire /vercel/output, sur les serveurs de build Vercel.
✓ Deployment completed — tes fichiers sont propagés sur tous les nœuds CDN. Le cache des anciens fichiers est invalidé. Ton changement est en ligne.
5 — Vérifier dans le navigateur
Ouvre ton URL Vercel. L'onglet du navigateur affiche maintenant « Portfolio de Marc — BTS SIO SLAM ».
Si tu vois encore l'ancien titre après le push
Ton navigateur a mis la page en cache. Fais Ctrl+F5 (Windows) ou Cmd+Shift+R (Mac) pour forcer un rechargement complet. En navigation privée, le cache est vierge — tu vois exactement ce que le CDN sert, sans bruit de cache.
Flag B4
Production (le cycle complet)
Modifie ta page en local (ex. change une couleur ou un titre), commite et pousse (git push). Attends, puis rafraîchis ton URL Vercel.
Rends : la modification faite, et confirme qu'elle est apparue toute seule en ligne après le push.
8. Tester avant de publier : les Previews
Quand tu pousses sur ta branche principale (main), Vercel met à jour ton site public (la production). Mais que se passe-t-il si tu veux tester une grosse modif sans casser le site que le jury pourrait regarder ?
Réponse : tu travailles sur une autre branche Git. Vercel lui donne alors une URL de preview (aperçu), séparée de la production.
Chaque branche a son URL : main → la production publique ; une autre branche → une preview privée pour tester.
À quoi ça sert concrètement
Tu prépares une refonte de ta page « Projets ». Tu la fais sur une branche refonte et tu pousses.
Vercel génère une URL de preview. Tu la regardes, tu corriges, tu la montres à un camarade — sans toucher au site officiel.
Quand c'est nickel, tu fusionnes dans main → ça part en production. Zéro risque pour la version vue par le jury.
Pour aujourd'hui : juste comprendre
Tu n'es pas obligé de manipuler les branches maintenant (on les a vues en séance Git).
Retiens le concept : production = la branche principale, preview = toute autre branche, chacune avec sa propre URL.
Les 3 environnements — tableau de synthèse
En développement professionnel, ton portfolio vit en 3 endroits simultanément. Repère bien les différences :
| Environnement | Branche Git | URL | Visible par | Déclenché quand |
|---|---|---|---|---|
| Local | n'importe laquelle | localhost (ou ouverture directe du fichier) | toi seul | tu ouvres le fichier sur ton PC |
| Preview | toute branche sauf main | projet-git-hash.vercel.app (URL générée) | toi + personnes avec le lien exact | push sur une branche autre que main |
| Production | main (branche configurée) | ton-site.vercel.app (URL stable) | tout le monde | push sur main ou rollback |
Essaie-le : crée une branche de test et observe la preview
Voici les commandes exactes pour expérimenter les branches Vercel depuis ton terminal :
# 1. Crée une branche "test-couleur" et bascule dessus
git checkout -b test-couleur
expl.
git checkout -b test-couleur — crée une nouvelle branche nommée test-couleur et bascule dessus immédiatement. Le -b = « create branch + checkout » en une seule commande. Tu es maintenant sur cette branche : tes prochains commits n'affecteront pas main.
Modifie une couleur dans ton CSS (ex. change le fond de #ffffff en #f0f0f0), puis pousse :
git add .
git commit -m "test: couleur de fond alternative"
git push -u origin test-couleur
Branch 'test-couleur' set up to track remote branch 'test-couleur' from 'origin'.
To github.com/marc/portfolio.git
* [new branch] test-couleur -> test-couleur
expl.
push -u origin test-couleur — le -u (upstream) lie ta branche locale à la branche distante GitHub. Nécessaire la 1re fois ; les prochains pushs sur cette branche se feront avec git push seul.
[new branch] test-couleur → test-couleur — GitHub crée la branche. Vercel détecte ce nouveau push sur une branche autre que main et génère une URL de preview dédiée.
Dans ton dashboard Vercel (Deployments), tu vois un déploiement avec l'étiquette « Preview » (et non « Production »). Clique sur l'URL de preview pour voir ton site avec la nouvelle couleur — sans toucher à la version officielle visible par le jury.
Quand ta modification est validée : merger en production
La couleur te convient ? Tu la fais passer en production en fusionnant dans main :
git checkout main
git merge test-couleur
git push
expl.
git checkout main — tu repasses sur la branche principale.
git merge test-couleur — tu intègres les commits de test-couleur dans main (en local).
git push — tu pousses le résultat sur GitHub. Vercel redéploie automatiquement la production avec ta modification validée.
La branche test-couleur peut être supprimée ensuite (elle a rempli son rôle) : git branch -d test-couleur.
Flag D1
Investigation
Dans Vercel, ouvre l'onglet « Deployments » de ton projet. Repère l'étiquette « Production » sur ton déploiement.
Rends : où tu vois ce mot, et explique en une phrase ce que serait un déploiement « Preview ».
9. Revenir en arrière : le rollback
Tu pousses une modif… et elle casse ta mise en page. Panique ? Non. Vercel garde l'historique de tous tes déploiements. Tu peux revenir à une version précédente en deux clics. Ça s'appelle un rollback.
Comment faire un rollback
- Va dans l'onglet « Deployments » de ton projet.
- Tu vois la liste de tous tes déploiements, du plus récent au plus ancien (chacun correspond à un push).
- Repère un déploiement qui marchait bien (statut « Ready »).
- Clique le menu « … » à droite de ce déploiement → « Promote to Production » (ou « Rollback »).
- En quelques secondes, ton URL publique repointe sur cette ancienne version. Ton site est réparé.
Le filet de sécurité du déploiement
Le rollback ne touche pas à ton code GitHub : il change juste quelle version est servie au public.
Ça te laisse le temps de corriger tranquillement en local, puis de repousser une bonne version. C'est exactement ce que font les vrais développeurs quand une mise en prod tourne mal.
Et si… le rollback ne suffit pas ?
Le rollback répare l'affichage en ligne, mais ton dépôt GitHub garde le commit buggé.
Pense à corriger le bug en local et à le pousser : sinon, ton prochain git push remettra le problème en production.
Flag E1
Extension
Ouvre l'historique « Deployments ». Repère un déploiement antérieur. Sans rien casser, explique la marche à suivre pour revenir dessus.
Rends : le nombre de déploiements visibles dans ton historique, et la procédure de rollback en 3 étapes (avec tes mots).
10. Les variables d'environnement (pour plus tard)
Ton portfolio n'en a pas besoin aujourd'hui. Mais c'est un mot que tu vas vite croiser, et le comprendre maintenant t'évitera de bloquer plus tard.
Le problème qu'elles résolvent
Imagine une app dynamique qui se connecte à une base de données avec un mot de passe. Tu ne veux surtout pas écrire ce mot de passe en clair dans ton code (il finirait public sur GitHub !).
La solution : une variable d'environnement. C'est un réglage secret rangé en dehors du code, que la plateforme fournit à l'app au moment où elle tourne.
| Sans variable d'env | Avec variable d'env |
|---|---|
| mot de passe écrit dans le code | mot de passe rangé dans Vercel |
| publié sur GitHub = fuite | jamais dans le code = sûr |
| change le code pour changer la valeur | change le réglage, sans toucher au code |
Où ça se passe dans Vercel
Dans Settings → Environment Variables, tu ajoutes une paire NOM = valeur (ex. API_KEY = abc123). Vercel l'injecte dans l'app au moment du déploiement. Le secret reste hors du code, hors de GitHub.
Le fichier .env local — la règle d'or
En développement local, les variables d'environnement vivent dans un fichier .env à la racine de ton projet :
# .env — fichier LOCAL uniquement, jamais sur GitHub !
DB_HOST=localhost
DB_PORT=3306
DB_PASSWORD=gsbpass
API_KEY=ma-cle-secrete-abc123
expl.
# — commentaire, ignoré par le programme.
DB_PASSWORD=gsbpass — paire NOM=valeur, sans espaces autour du =.
Dans le code Node.js, tu accèdes à la valeur via process.env.DB_PASSWORD → retourne la chaîne "gsbpass" au moment de l'exécution.
Même syntaxe en production sur Vercel : process.env.DB_PASSWORD → retourne la valeur que tu as entrée dans l'interface Vercel. Le code ne change pas, seul l'endroit où la valeur est stockée diffère.
Erreur courante
committer le fichier .env sur GitHub (fuite de secrets)
Symptôme : tu fais git add . puis git push sans vérifier. Le fichier .env part sur GitHub. N'importe qui peut voir ton mot de passe de base de données ou ta clé d'API dans l'historique.
Cause : .env n'est pas listé dans le fichier .gitignore.
Solution (avant que ça arrive) : ajoute ces lignes dans ton .gitignore dès le début du projet :
.env
.env.local
.env*.local
Si c'est déjà arrivé : (1) change immédiatement tous les secrets exposés — ils sont compromis même si tu supprimes le fichier du repo, l'historique Git le conserve. (2) Retire-le du suivi avec git rm --cached .env, commite et pousse. GitHub a un scanner de secrets (« Secret scanning ») qui t'envoie une alerte email dans ce cas — lis ces alertes.
| Contexte | Où stocker la variable | Comment y accéder dans le code |
|---|---|---|
| Développement local | fichier .env à la racine (jamais committé) | process.env.NOM (Node.js) |
| Déployé sur Vercel | Settings → Environment Variables dans le dashboard | process.env.NOM (même syntaxe — c'est transparent) |
À retenir aujourd'hui
Ton portfolio statique = aucun secret, donc aucune variable d'env.
Mais quand tu feras une vraie app (base de données GSB, clé d'API météo…), tu sauras : les secrets vivent dans .env en local et dans les réglages de la plateforme en production — jamais dans le code, jamais sur GitHub.
11. Mini-projet : ton portfolio public
La mission
Tu réunis tout ce que tu as appris en une livraison propre, présentable au jury.
- Ton portfolio (sur GitHub) est déployé sur Vercel, avec une URL publique en
https://qui marche. - Tu vérifies qu'il s'affiche bien depuis un autre appareil (téléphone en données mobiles).
- Tu fais une amélioration en local, tu la pousses, et tu constates le redéploiement automatique.
- Tu repères ton historique de déploiements dans Vercel (la trace de chaque push).
- Tu notes ton URL Vercel (pour le BTS blanc) et tu l'ajoutes, par exemple, dans la signature de ton portfolio.
Critères de réussite (auto-vérification)
☐ L'URL s'ouvre sur un autre appareil que ton PC.
☐ Le cadenas HTTPS est présent.
☐ Une modif poussée apparaît seule en ligne (déploiement continu prouvé).
☐ Tu sais retrouver l'historique des déploiements et expliquer le rollback.
Flag B5
Mini-projet (production)
Mets ton portfolio en ligne et prouve le déploiement continu (une modif poussée apparaît en ligne).
Rends : ton URL publique, la modification testée, et confirme le redéploiement auto. Tu as maintenant un portfolio en ligne à présenter au jury !
Défis bonus
Bonus A : personnalise le sous-domaine de ton site (Settings → Domains) pour un nom plus pro.
Bonus B : dans Deployments, regarde l'historique : chaque push y figure. Combien de déploiements as-tu déjà ?
Bonus C : déploie le même portfolio sur GitHub Pages (ou Netlify) et compare l'expérience avec Vercel.
Pour finir
Ton antisèche (la chaîne de déploiement)
| Étape | Outil |
|---|---|
| écrire la page | HTML / CSS (+ agent IA) |
| versionner | Git (commit) |
| mettre sur le cloud | GitHub (push) |
| déployer en ligne | Vercel (import depuis GitHub) |
| sécuriser | HTTPS automatique (Vercel) |
| mettre à jour | un git push → redéploiement auto |
| réparer une casse | rollback (Deployments → Promote) |
Vérifie tes acquis
- Quelle est la différence entre
localhostet un site déployé ? - Pourquoi un portfolio HTML/CSS est-il « statique », et pourquoi ça simplifie son déploiement ?
- Que fait Vercel, et d'où prend-il ton code ? Cite une alternative.
- Que signifie le cadenas HTTPS, et qui le met en place ici ?
- Qu'est-ce que le déploiement continu ? Que se passe-t-il après un
git push? - À quoi sert une URL de preview ? En quoi diffère-t-elle de la production ?
- Ton dernier déploiement a cassé le site : comment reviens-tu en arrière ?
- Cite la chaîne complète, de ta page jusqu'au site public.
Corrigé du quiz (auto-vérification)
Vérifie tes réponses ici
- localhost vs déployé :
localhost= visible uniquement sur ta machine ; PC éteint = site éteint. Déployé = sur un serveur toujours allumé, accessible par n'importe qui via une URL depuis n'importe où dans le monde. - Portfolio statique : HTML et CSS sont des fichiers déjà prêts — le serveur les envoie tels quels, sans calcul ni exécution de code. Résultat : rien à compiler, rien à faire tourner ; Vercel copie tes fichiers et c'est en ligne en quelques secondes.
- Vercel : Vercel prend ton code depuis GitHub, le publie sur ses serveurs (réseau CDN mondial) et te donne une URL en HTTPS. Alternative : Netlify (JAMstack, formulaires intégrés) ou GitHub Pages (ultra-simple, limité).
- Le cadenas HTTPS : la connexion est chiffrée (TLS 1.3) — les données échangées ne peuvent pas être lues par un tiers sur le réseau (protection contre l'attaque homme-du-milieu). Vercel le met en place automatiquement via Let's Encrypt ; le certificat est renouvelé tous les 90 jours sans action de ta part.
- Déploiement continu : chaque
git pushdéclenche automatiquement un nouveau déploiement (via un webhook GitHub → Vercel). Le site est à jour en ~30 secondes, sans aucune action manuelle. - Preview vs production : la production (
main) = l'URL publique stable, visible par tous. La preview = une URL temporaire générée pour toute autre branche, accessible uniquement par toi ou via le lien exact — pour tester sans risquer la version publique. - Rollback : Deployments → repère un déploiement « Ready » antérieur → clique « … » → « Promote to Production ». En quelques secondes, ton URL publique repointe sur cette version. Ton code GitHub reste inchangé — tu le corriges ensuite en local.
- La chaîne complète : HTML/CSS (écrire) →
git commit(versionner) →git push(envoyer sur GitHub) → Vercel (déploie + HTTPS automatique) → URL publique accessible partout dans le monde.
Tu es bloqué ?
Mon dépôt n'apparaît pas dans Vercel ? → « Adjust GitHub App Permissions » et autorise ce dépôt.
Le déploiement échoue (Failed) ? → lis les logs ; Framework Preset sur « Other » ; index.html à la racine ; Redeploy.
Ma modif n'apparaît pas en ligne ? → l'as-tu bien commit ET push ? attends ~30 s et fais Ctrl+F5 (cache/CDN).
J'ai cassé mon site en ligne ? → Deployments → un déploiement « Ready » → « Promote to Production » (rollback).
Un mot incompris ? → glossaire ci-dessous.
Glossaire
| Mot | Définition |
|---|---|
| Déployer | publier un site sur un serveur accessible en ligne |
| Hébergement | le service qui fait tourner ton site |
| Statique / dynamique | fichiers prêts à servir / page fabriquée à chaque visite |
| Vercel | plateforme qui déploie ton site depuis GitHub |
| URL / domaine | l'adresse web publique de ton site |
| HTTPS | connexion chiffrée et sécurisée (le cadenas) |
| Build | l'étape qui prépare le code avant publication |
| Déploiement continu | chaque push GitHub redéploie automatiquement le site |
| Production | la version publique officielle (branche principale) |
| Preview | une URL d'aperçu pour une autre branche, privée |
| Rollback | revenir à un déploiement précédent qui marchait |
| CDN | réseau de serveurs qui mettent ton site en cache, près des visiteurs |
| Variable d'environnement | réglage secret rangé hors du code (mots de passe, clés) |
| Logs | le journal des étapes/erreurs d'un déploiement |
La prochaine fois
Ton portfolio est en ligne ! On change de terrain : les bases de données — comprendre comment on stocke et retrouve des données, avec SQL. La 2e grande compétence du dev, après le web.
Compétences mobilisées
référentiel BTS SIO SLAM
Bloc 1 · Développer la présence en ligne de l'organisation
→ Configurer des serveurs web pour héberger des sites
→ Assurer disponibilité et sécurité des services en ligne
Bloc 1 · Mettre à disposition des utilisateurs un service informatique
→ Installer et configurer des services
→ Vérifier la disponibilité et la performance