Aller au contenu

Déployer sur Netlify

Ce guide branche Netlify comme cible de déploiement d’un projet Menestrel. À chaque publication (et à chaque restauration de version), Menestrel appelle le Build Hook : Netlify relance le build de ton site Astro, qui récupère le snapshot publié. Le hook suffit pour reconstruire ; un token API en plus permet de suivre chaque build depuis l’admin, jusqu’à « En ligne » ou « Échec ».

Prérequis : un site Netlify qui build déjà ton projet Astro depuis Git, et un projet Menestrel synchronisé (voir Ton premier site).

  1. Créer le Build Hook côté Netlify

    Dans Netlify, ouvre ton site puis Site configuration, Build & deploy, Build hooks, et ajoute un hook. Nomme-le menestrel, choisis la branche de production, puis copie l’URL générée :

    https://api.netlify.com/build_hooks/xxxxxxxxxxxxxxxxxxxxxxxx

    Menestrel n’accepte que des URLs https sur l’hôte api.netlify.com. Toute autre URL est rejetée à la création de la cible.

  2. Connecter la cible dans Menestrel

    Dans l’admin, ouvre « Réglages du site », onglet « Déploiement », puis « Connecter un hébergeur ». Choisis le fournisseur Netlify, donne un nom à la cible (par exemple « Prod Netlify ») et colle l’URL du hook dans le champ « URL du deploy hook ». Les deux autres champs sont facultatifs : sans eux, la cible reconstruit déjà le site.

  3. Activer le suivi du build (facultatif)

    Sans token, Menestrel déclenche le build puis n’en sait plus rien : le déploiement reste « Déclenché » dans la liste. Avec le suivi, il passe par « En construction » puis « En ligne » ou « Échec », avec un lien vers l’URL du déploiement Netlify. Renseigne les deux champs, l’un sans l’autre ne suffit pas :

    • « Token API » : un Personal Access Token Netlify (User settings, Applications, Personal access tokens). Menestrel ne s’en sert qu’en lecture, pour lister les déploiements du site.
    • « Id de site » : le Site ID de ton site, affiché dans Site configuration, General.

    La configuration de la cible, token compris, est chiffrée au repos.

  4. Tester la cible

    Le bouton « Tester » appelle réellement le hook : Netlify lance un vrai build. C’est voulu, un test qui ne déclenche rien ne prouve rien. Dans la liste des deploys Netlify, le build apparaît avec le titre Publication Menestrel: <id du snapshot>, ou Publication Menestrel: test si rien n’est encore publié.

  5. Poser les variables d’environnement du build

    Dans Netlify (Site configuration, Environment variables), pose MENESTREL_CONTENT_URL sur l’URL du snapshot publié :

    Fenêtre de terminal
    MENESTREL_CONTENT_URL=https://content.menestrel.dev/p/prj_xxx/pk_xxx

    Le build ne dépend alors plus de l’application Menestrel : si l’admin est en maintenance, Netlify reconstruit quand même. Ne pose pas MENESTREL_TOKEN en production. Détail des variables : Variables d’environnement.

À chaque déclenchement, Menestrel fait un POST sur le hook avec un paramètre d’URL trigger_title valant Publication Menestrel: <id du snapshot>, et un corps JSON {"snapshot_id": "..."}. Chaque build est donc identifiable dans la liste des deploys Netlify : tu sais toujours quelle publication a produit quel build.

Avec le suivi activé, Menestrel interroge GET https://api.netlify.com/api/v1/sites/<site_id>/deploys avec le token : une première fois 15 secondes après le déclenchement, puis à intervalles plus espacés jusqu’à la minute, pendant 45 minutes au plus. Les états Netlify new, enqueued, building et processing s’affichent « En construction » ; ready devient « En ligne » ; error devient « Échec ».

Un déclenchement raté est retenté, trois tentatives au plus par build. Après trois échecs consécutifs, la cible passe « En pause » : Menestrel arrête d’appeler un hook qui ne répond plus, plutôt que d’échouer en silence à chaque publication. Corrige la cause (hook supprimé côté Netlify, token révoqué…), puis clique « Reprendre » sur la cible.