Prévisualisations
Une prévisualisation est un environnement éphémère qui sert une branche à sa propre adresse, pour relire un changement avant la production. Cette page explique quand une prévisualisation naît et disparaît, comment la protéger, comment laisser un outil automatique la traverser, comment en créer une à la demande, et comment traiter une demande de fusion venue d'une bifurcation.
Les concepts
- Prévisualisation : un environnement de genre
preview, attaché à une branche. Chaque nouveau commit de la branche s'y déploie. - Adresse de la branche : l'adresse stable de la prévisualisation. Chaque déploiement garde en plus son adresse immuable.
- Protection : ce que la prévisualisation demande à qui la visite. Le réglage vaut pour toutes les prévisualisations du projet.
- Jeton de contournement : un jeton à durée courte qui traverse la protection, pour l'intégration continue et les tests de bout en bout.
- Bifurcation : une demande de fusion ouverte depuis le dépôt d'un tiers (un « fork »).
Quand une prévisualisation naît
Trois chemins en créent une :
- Une demande de fusion ouverte depuis une branche qu'aucune règle de
glowsoft.jsonne fait atterrir ailleurs. Chaque mise à jour de la demande redéploie son dernier commit. - Une poussée sur une branche qu'un motif envoie vers
previewdansglowsoft.json:
{
"version": 1,
"branches": {
"production": "main",
"patterns": [{ "pattern": "feat/**", "environment": "preview" }]
}
}
- Une demande explicite, depuis la console ou par
preview_manage(voir plus bas).
Sans glowsoft.json, aucune poussée hors de la branche de production ne crée de prévisualisation : seules les demandes de fusion et les demandes explicites en créent. Voir Git et déploiement automatique.
Les variables d'une prévisualisation suivent les règles des environnements.
Quand elle disparaît
- À la fermeture ou à la fusion de sa demande, sauf si une autre demande ouverte suit la même branche.
- Après sept jours sans activité. Chaque poussée, chaque mise à jour de la demande et chaque visite repousse l'échéance de sept jours.
- Quand sa branche n'existe plus au dépôt : un inventaire nocturne la détruit.
- À l'échéance choisie pour une prévisualisation à la demande (de 1 à 30 jours), elle aussi repoussée par l'activité.
Les adresses immuables de ses déploiements restent servies pendant leur rétention, même après la destruction de la prévisualisation. Sur Vue d'ensemble, la carte des environnements dit la date de suppression prévue de chaque prévisualisation.
Protéger les prévisualisations
| Mode | Qui entre |
|---|---|
« Publique » (public) | Toute personne qui a l'adresse. |
« Mot de passe partagé » (password) | Qui connaît le mot de passe ; il ouvre une session de douze heures. |
« Membres du projet » (members) | Les membres du projet, par leur compte Bastide. C'est le réglage d'un projet neuf. |
« Liste d'adresses » (addresses) | Les adresses IP et les blocs listés, 100 au plus. |
Toutes les prévisualisations portent noindex, quel que soit le mode. Les environnements qui ne sont pas des prévisualisations ne sont pas concernés.
Depuis la console
Ouvrez Réglages du projet, section « Aperçus », carte « Protection des prévisualisations ». Choisissez « Qui peut voir une prévisualisation », renseignez le « Mot de passe partagé » (8 à 128 caractères) ou les « Adresses admises », puis enregistrez. Enregistrer ferme toutes les sessions ouvertes des visiteurs : la carte le dit avant.
En mode « Membres du projet », un visiteur non connecté est envoyé sur l'écran Entrée dans une prévisualisation de la console, qui lui ouvre une adresse d'entrée à usage unique (valable une minute) puis une session d'une heure.
Par un agent ou l'API
preview_protection_configure règle le mode, au rang mainteneur (maintainer) ou avec le rôle transversal sécurité. Un agent ne peut pas régler public.
{
"projectId": "prj_01JQ8ZK4M7NP2RSTVWXYZ34567",
"mode": "addresses",
"addresses": ["203.0.113.0/24", "2001:db8::/48"]
}
Le mot de passe n'est jamais relu : la réponse dit seulement passwordSet. Sans password ou sans addresses, la valeur déjà posée reste. Le bloc le plus large admis est un /16 en IPv4 et un /48 en IPv6.
Jetons de contournement
Un jeton laisse une intégration continue ou une suite de tests traverser la protection d'une prévisualisation, quel que soit son mode.
- Il vaut pour un seul environnement, 24 heures au plus.
- Il se présente dans l'en-tête
X-Bastide-Contournement, jamais dans une adresse. L'edge le retire de la requête avant qu'elle n'atteigne votre application. - Il n'est montré qu'une fois, à sa création.
- Vingt jetons en vigueur au plus par environnement.
Dans la console, la carte « Protection des prévisualisations » porte la partie « Jetons de contournement » : choisissez la prévisualisation, « À quoi il sert » et la « Durée, en heures ». La création est réservée à une personne, par l'opération [preview.token.create](/docs/reference/preview.token.create) ; un agent révoque un jeton avec preview_token_revoke, que l'edge refuse ensuite en moins de trente secondes.
curl -H "X-Bastide-Contournement: bpt_…" https://<adresse-de-la-previsualisation>/
Une prévisualisation à la demande
Pour relire une branche sans demande de fusion ni règle, ouvrez Réglages du projet, section « Aperçus », carte « Prévisualisation à la demande ». Indiquez la « Branche » et la « Durée, en jours » (de 1 à 30), puis créez-la. Le même geste sur une prévisualisation existante repousse son échéance ; un autre la détruit.
Un agent fait de même avec preview_manage :
{
"projectId": "prj_01JQ8ZK4M7NP2RSTVWXYZ34567",
"action": "create",
"branch": "feat/panier",
"ttlDays": 7
}
Rien n'est déployé à ce moment : la réponse rend environmentId, et l'adresse naît au premier déploiement, que vous lancez par deployment_create sur cet environnement.
Les demandes de fusion issues d'une bifurcation
Le code d'une bifurcation est celui d'un tiers. Il ne se construit jamais de lui-même :
- La demande apparaît dans la carte « Protection des prévisualisations », partie « Demandes de fusion issues d'une bifurcation », avec l'état « Attend une autorisation ».
- Un membre au rang mainteneur relit le commit, puis l'autorise. La fenêtre « Construire la demande n° … ? » dit ce que l'autorisation engage.
- Le commit autorisé se construit dans un environnement isolé, marqué « Isolé · bifurcation » : il ne reçoit aucune variable sensible, ni la sienne ni celle qu'il hériterait. Sa configuration est lue sur la branche par défaut de votre dépôt, pas sur la bifurcation.
L'autorisation porte sur un commit précis, qui doit être le dernier de la demande. Un commit poussé ensuite attend sa propre autorisation (commit_non_autorise). L'opération est [preview.fork.accept](/docs/reference/preview.fork.accept), réservée à une personne.
Limites par palier
| Palier | Prévisualisations simultanées |
|---|---|
| Découverte | 1 |
| Standard | 3 |
| Pro | 25 |
| Souverain | 50 |
Au plafond, une nouvelle prévisualisation est refusée en nommant le plafond et le palier. Fermer une demande de fusion ou supprimer une branche en libère une. Chaque prévisualisation consomme aussi des minutes de construction (voir Constructions).
Erreurs fréquentes
| Code | Remède |
|---|---|
quota_de_jetons_atteint | Vingt jetons sont déjà en vigueur sur cet environnement : en révoquer un. |
commit_non_autorise | La bifurcation a reçu un commit après l'autorisation : autoriser le nouveau commit. |
valeur_rendue_une_fois | Un jeton ne se relit pas : en créer un autre. |
Une capture d'aperçu n'est pas prise pour une prévisualisation protégée : c'est attendu, la capture n'en verrait que la porte.
Voir aussi : Git et déploiement automatique, Environnements et variables, Déployer, Contrôles de déploiement, Sécurité des agents.