Mise en ligne d’un site
Brouillon, révision, compilation, aperçu, publication et restauration : ce que les visiteurs peuvent voir et à quel moment.
Un site passe par quatre étapes. Seule la dernière modifie ce que voient les visiteurs.
Brouillon et révisions
Le brouillon correspond à l’état actuel des fichiers du site. Chaque modification crée une révision : un identifiant de commit Git de 40 caractères, accompagné d’un résumé d’une phrase et de l’auteur (l’éditeur, l’assistant, un agent via MCP, la CLI ou l’API). Rien n’est effacé : l’historique répertorie toutes les révisions, et vous pouvez en comparer deux ou restaurer une version antérieure sous la forme d’une nouvelle entrée.
Une modification correspond à une seule révision, quel que soit le nombre de fichiers touchés. Un appel qui modifie trois fichiers crée une seule entrée ; une modification répartie sur plusieurs appels utilise un changeset que vous validez en une fois. Un changeset reste ouvert pendant 10 minutes.
Deux personnes modifient en même temps
Lorsque vous modifiez un fichier, envoyez le hash que vous avez lu (expected_hash). Si une autre personne
a modifié ce fichier entre-temps, toute la modification est rejetée avec 409 conflict ;
rien n’est écrit, et l’erreur REST ou CLI contient la révision actuelle :
{
"error": {
"type": "conflict_error",
"code": "conflict",
"message": "...",
"details": {
"reason": "revision_conflict",
"current_revision": "9f2c...",
"paths": [
{ "path": "src/content/site/business.json", "expected": "a1b2...", "found": "c3d4..." }
]
}
}
}Relisez les fichiers indiqués dans paths, appliquez votre modification par-dessus, puis réessayez. Via
MCP, l’erreur indique que le site a changé depuis la préparation de la modification, sans
details ; vous devez donc relire les fichiers vous-même. Les points de terminaison du contenu lisent eux-mêmes le hash actuel : ils n’entrent en conflit que si quelqu’un écrit exactement au même moment.
Compilations
Une compilation transforme le brouillon, ou une révision que vous indiquez, en site statique. Elle s’exécute
dans un conteneur isolé, sans réseau ni identifiants, et s’arrête au bout de 5
minutes. Une compilation passe par les états queued, building et collecting avant d’atteindre ready,
ou se termine par failed ou cancelled. Si vous lancez une compilation d’une révision qui dispose déjà
d’une compilation prête, celle-ci vous est renvoyée au lieu d’en lancer une deuxième.
En cas d’échec, error en indique la raison et le journal de compilation affiche la sortie du compilateur.
Corrigez les fichiers et relancez la compilation.
Aperçus
Un aperçu est un lien privé vers une compilation, valable 7 jours par défaut et 30 jours au maximum. Toute personne disposant du lien peut consulter cette compilation sans compte. Le lien ne donne aucun autre accès, n’est jamais indexé et peut être révoqué. Il montre l’apparence du site, comme s’il était publié : partagez-le donc avant la publication.
Un aperçu n’est pas un site publié. Chaque page comporte un petit bandeau « Aperçu »
(masqué pendant la modification dans l’application) et s’exécute dans un environnement sandbox avec l’origine null.
Ses scripts ne peuvent pas définir de cookies, utiliser le stockage du navigateur ni lancer de Worker. Une
API tierce qui refuse cette origine les bloque également. Un formulaire, une bannière de cookies
ou un outil côté client qui dépend de ces fonctionnalités ne fonctionne donc qu’après la publication du site. Un
avertissement de compilation indique lesquels votre site utilise.
Publication
La publication met en ligne une compilation à toutes les adresses du site, en environ une minute. C’est la seule étape qui modifie le site public.
- Vérification.
review_publishindique quelle compilation serait mise en ligne, si elle correspond au dernier brouillon, ce qui bloque la publication et fournit unexpected_generation. - Publiez cette compilation avec la valeur
expected_generationque vous avez lue.
La génération est un compteur qui augmente à chaque publication, restauration ou dépublication.
En la renvoyant, vous vous assurez de publier exactement l’état vérifié. Si une autre personne a publié entre-temps, l’appel est rejeté avec 409 conflict et
vous devez recommencer la vérification.
Une compilation ne peut pas être publiée tant qu’un blocage subsiste :
| Blocage | Marche à suivre |
|---|---|
guest_site | La personne doit d’abord revendiquer le site. |
no_build | Compilez le brouillon. |
build_not_ready | Attendez que la compilation passe à ready, ou relancez-la si elle a échoué. |
origin_changed | L’adresse principale du site a changé depuis cette compilation. Relancez-la. |
plan_required | Le site est un brouillon : sa publication nécessite le forfait Site. Partagez un lien d’aperçu en attendant. |
site_unavailable | Le site est en cours de création, de suspension ou de suppression. |
Restauration et dépublication
Une restauration remet en ligne la compilation d’une publication antérieure, sans la reconstruire. Le brouillon reste inchangé : il peut donc être plus récent que ce que voient les visiteurs. Un site conserve ses 50 dernières publications pour permettre leur restauration.
La dépublication met le site hors ligne : les visiteurs voient qu’aucun site n’est disponible à cette adresse jusqu’à la prochaine publication. Rien n’est supprimé.
La publication, la restauration et la dépublication nécessitent le scope sites:publish et sont réservées aux administrateurs de l’espace de travail. Un agent qui ne dispose pas de ce scope peut tout préparer et demander au propriétaire de publier.
Export et import
Le projet entier s’exporte sous forme d’archive tar qui peut être compilée n’importe où avec
npm ci && npm run build. L’import d’une archive remplace le brouillon par ses fichiers
et crée une seule révision. node_modules, dist, .git et les fichiers secrets sont ignorés. L’import ne lance ni compilation ni publication.