2026 OpenClaw, pratique front-end :
Deployment Hook Vercel → Mac distant — fumée, audit d’en-têtes et résumé de build
Public : équipes Vercel qui veulent une assurance après déploiement sur l’URL publique, pas seulement un pipeline vert. Ce guide relie le Deployment Hook à un exécuteur OpenClaw sur Mac distant pour répéter fumée, audit en-têtes et rappel build_summary avec le même point d’entrée. Fichier : 2026-openclaw-vercel-deployment-hook-smoke-headers-summary.html. Pour prolonger : Netlify Deploy Hook, Cloudflare Pages, CSP et nonce.
01 OpenClaw et l’URL du hook
Un Deployment Hook atteste la fin de build ; il ne garantit pas que CSP, HSTS ou Permissions-Policy restent alignés après vercel.json, middleware Edge et règles de réécriture sur le hostname réellement utilisé par le trafic.
- Chauffe. Sans attente ISR explicite, vous mesurez parfois une coquille froide alors que le CDN sert l’ancienne page.
- En-têtes. Le dépôt ne reflète pas toujours la réponse ; différez
curl -sSIcontreheaders_expect.json. - Navigateurs. Safari vs Chromium : validez sur Mac distant avec Playwright
webkitetchromium.
Matrice de décision : automatisation par hook versus QA manuelle ponctuelle.
| Sujet | QA manuelle ad hoc | Hook plus exécuteur OpenClaw |
|---|---|---|
| Déclenchement | Souvenir humain après Slack. | Chaque prod lance le même script. |
| Preuve | Captures dans le chat. | NDJSON, diffs d’en-têtes, build_summary + VERCEL_DEPLOYMENT_ID. |
| Secrets | Partage trop large. | Secret unique à l’ingress ; pas de jetons dans l’URL du hook. |
Étapes de câblage reproductibles.
- Vercel → Settings → Git → Deploy Hooks : URL prod, secret comme mot de passe, rotation si départ.
- Hook → ingress uniquement : HMAC ou Bearer,
202 Acceptedrapide, fileOPENCLAW_RUN_ID, forward vers~/runners/vercel-post-deploy.shsur le Mac loué. DEPLOY_URL=https://${VERCEL_URL},VERCEL_DEPLOYMENT_ID,VERCEL_GIT_COMMIT_SHA; refusez les hôtes hors liste.- Même script versionné
scripts/vercel/openclaw-post-deploy.shpour local et SSH. - Verrou par déploiement pour éviter deux fermes Playwright sur relances webhook.
02 Tests de fumée et interface du script d’audit des en-têtes
Trois phases déterministes ; chacune append une ligne NDJSON à .openclaw/reports/deploy_hook.ndjson avec phase, http_status, duration_ms, openclaw_run_id pour corréler journaux et déploiement.
(A) Chauffe. curl -fsS sur $DEPLOY_URL jusqu’à HTTP 200 et un marqueur HTML stable ; backoff avec jitter si 429 ou saturation edge.
(B) En-têtes. Fichier config/headers_expect.json pour strict-transport-security, content-security-policy ou content-security-policy-report-only, x-frame-options, permissions-policy ; capture curl -sSI, casse unifiée, diff dans .openclaw/reports/headers_diff.txt, échec si une directive obligatoire disparaît.
(C) Fumée. npx playwright test tests/smoke --project=webkit --project=chromium avec BASE_URL=$DEPLOY_URL ; sur Apple Silicon, WebKit en premier si l’ITP vous a déjà piégé. Traces d’échec sous .openclaw/traces/.
03 Mode de rétroaction du résumé d’échec
En succès, écrivez .openclaw/reports/build_summary.json au schéma build_summary/v1 : git_sha, deploy_id, durées par phase, headers_diff_bytes. En échec, conservez la même enveloppe avec failed_phase, extrait stderr et exit_code pour que les bots et les commentaires PR consomment un seul format.
POST vers webhook d’équipe ou API de commentaire avec Idempotency-Key: ${VERCEL_GIT_COMMIT_SHA}:${VERCEL_DEPLOYMENT_ID}:summary afin d’absorber les relances Vercel sans doublons. Ne journalisez jamais les jetons ; masquez les hôtes sensibles dans le NDJSON archivé. Pour corréler bundles et santé release, alignez les champs sur les métriques de build en résumé PR.
Plafonnez la chauffe (par exemple cinq minutes) et conservez x-vercel-id ou cf-ray pour relier la sonde au POP observé.
Attachez headers_diff.txt au dossier artefact afin que la revue sécurité confronte intention dépôt et réponses réelles.
Restreignez OPENCLAW_GATEWAY_TOKEN aux files et callbacks de synthèse ; excluez jetons Vercel ou GitHub des bundles front et des journaux publics.
04 FAQ
| Symptôme | Cause probable | Que vérifier |
|---|---|---|
| 401 hook | Secret pivoté ou Authorization. | Régénérez hook, coffre, doc. |
| En-têtes incohérents | Middleware, vercel.json, ISR. |
Curl archivé par VERCEL_DEPLOYMENT_ID. |
| WebKit seul en échec | ITP / stockage. | Traces Playwright + retry cookies. |
| POST 429 | Limites GitHub. | Backoff, commentaire unique, espacez relances. |
Les lots curl remplacent-ils Playwright ?
Non : curl valide transport, redirections et directives d’en-têtes ; le navigateur impose CSP, contenu mixte et politiques de stockage différemment. Utilisez curl comme premier filtre rapide, puis Playwright pour le DOM, les sessions et les cas WebKit sensibles à l’ITP.
Exécutez la QA des hooks Vercel sur du matériel Apple réel
Attachez vos Deployment Hooks à une ferme Safari et Chromium stable sur matériel Apple, diffusez les synthèses OpenClaw et réduisez la dépendance au portable d’un collègue. Les tarifs et le centre d’aide sont consultables sans créer de compte ; passez à l’achat ou la location lorsque votre cadence dépasse les minutes CI mutualisées.
Pour poursuivre : index du blog, accueil MacWww, centre d’aide.