---
title: "Mise en ligne d’un site"
description: "Brouillon, révision, compilation, aperçu, publication et restauration : ce que les visiteurs peuvent voir et à quel moment."
canonical: "https://atelier201.com/docs/fr/platform/drafts-builds-and-publishing"
updated: "2026-11-06"
---

# Mise en ligne d’un site

Un site passe par quatre étapes. Seule la dernière modifie ce que voient les visiteurs.

```mermaid title="De la modification au site en ligne"
flowchart LR
  A["Brouillon<br/>chaque modification"] --> B["Compilation<br/>brouillon compilé"]
  B --> C["Aperçu<br/>lien privé"]
  B --> D["Publication<br/>visible par 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](/docs/api/changesets/open) 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 :

```json
{
  "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.

1. **Vérification.** `review_publish` indique quelle compilation serait mise en ligne, si elle correspond
   au dernier brouillon, ce qui bloque la publication et fournit un `expected_generation`.
2. **Publiez** cette compilation avec la valeur `expected_generation` que 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](/docs/platform/guest-sites).                                  |
| `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.
