← Retour au blog
Coulisses techniques · Vercel · CI/CD · Lecture 6 min

Le making-of d'un déploiement raté 8 allers-retours avec mon assistant IA pour pousser un fichier HTML. Les 4 erreurs que j'aurais dû voir.

Retour d'expérience : comment un déploiement Vercel a tourné au fiasco malgré la simplicité apparente, et la leçon pour tes process IA.

💡 Ce que tu retiens en 30 secondes :
  • 8 tentatives de déploiement pour pousser 1 fichier HTML
  • 2 heures perdues en plein vendredi soir
  • 4 erreurs concrètes que j'aurais pu voir dès le début
  • 1 leçon : l'agent IA propose, toi tu valides à chaque étape
🪦

Vendredi soir, 23h. Un simple fichier HTML à pousser.

Je veux mettre en ligne un blog.html sur omnyx.agency. Logique : je le mets dans public/, je push, Vercel le sert. Spoiler : ça m'a pris 8 tentatives et 2h. Voici le making-of, et surtout les 4 erreurs concrètes qui ont fait perdre le fil. Pour que tu ne refasses pas les mêmes.

01

Le contexte : supposer que public/ sert les pages statiques à la racine

Vite · assumption

Mon blog.html était à public/blog.html. Au build, Vite l'a copié dans dist/blog.html. Ça aurait dû marcher. Mais Vite, par défaut, sert l'index React sur toutes les routes qui n'ont pas d'extension de fichier spécifique. Le fichier était bien sur le serveur, mais la route /blog.html était interceptée par le fallback SPA.

Erreur classique quand tu mélanges Vite SPA et pages statiques. Le routing SPA a la priorité sur tout, sauf si tu configures explicitement vercel.json avec des rewrites ou si tu utilises le pattern multi-entry.

⚠️ Le piège

Si tu ajoutes une page HTML statique à un projet Vite + React, elle ne sera pas servie telle quelle. Faut soit la mettre en multi-entry dans rollupOptions.input, soit configurer Vercel avec des rewrites explicites.

02

L'absence de vercel.json propre

config manquante

Mon vercel.json n'avait pas de section cleanUrls, ni de rewrites explicites. Le routing SPA avait la priorité sur tout. J'aurais dû, dès le début, documenter la config Vercel pour ce projet : tous les rewrites, tous les headers, toutes les exceptions.

Quand ton agent IA te propose une solution, il suppose souvent que ta config est correcte. Si elle ne l'est pas, tu pars dans une boucle de 4 hypothèses qui ne résolvent rien.

03

Faire confiance à l'agent IA sans vérifier

process · validation

Mon agent a passé 4 itérations à me dire « ah, c'est bon, j'ai compris, c'est un problème de path ». À chaque fois, sa solution était plausible mais incorrecte. J'aurais dû tester la solution moi-même après chaque itération, pas après 4.

Erreur de process de ma part : j'ai laissé l'agent enchaîner les hypothèses sans checkpoint. Lui pensait avancer, moi je regardais faire. Personne ne testait.

💡 Le bon process

Règle simple : après chaque proposition de l'agent, tu testes toi-même la solution. Si ça marche, on passe à la suite. Si ça marche pas, on revient à l'agent avec le retour d'erreur exact.

04

Ne pas documenter le pattern

notes · mémoire projet

Au final, la solution était : transformer blog.html en une entrée multi-page dans vite.config.ts (rollupOptions.input), avec output en blog/blog-article.html pour chaque article. C'est un pattern que je vais réutiliser 50 fois. Je l'aurais vu tout de suite si j'avais eu un notes/patterns.md.

Maintenant ce pattern est documenté, et c'est exactement ce qu'on utilise pour ce blog. La leçon : chaque galère technique résolue doit finir dans un fichier patterns.md du projet, pas dans un Slack éphémère.

→ LE BILAN

Un agent IA est fort pour générer des hypothèsesFaible pour les valider

Mon process devrait être : l'agent propose, je teste, l'agent propose la suite. Pas l'agent propose 4 hypothèses en série pendant que je le regarde faire. Cette session m'a fait perdre 2h mais m'a aussi forcé à documenter le pattern multi-entry Vite, que j'utiliserai 50 fois. Leçon retenue.

Tu construis un process où l'IA fait des changements de config ?

On peut t'aider à mettre le bon cadre : checkpoints de validation, documentation des patterns, et tests automatisés qui attrapent les régressions avant toi.