Vercel · Deployment Hook · OpenClaw · Mac distant · 2026

2026 OpenClaw, pratique front-end :
Deployment Hook Vercel → Mac distant — fumée, audit d’en-têtes et résumé de build

17 avril 2026 Front-end / automatisation release 10 min de lecture

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.

  1. Chauffe. Sans attente ISR explicite, vous mesurez parfois une coquille froide alors que le CDN sert l’ancienne page.
  2. En-têtes. Le dépôt ne reflète pas toujours la réponse ; différez curl -sSI contre headers_expect.json.
  3. Navigateurs. Safari vs Chromium : validez sur Mac distant avec Playwright webkit et chromium.

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.

  1. Vercel → Settings → Git → Deploy Hooks : URL prod, secret comme mot de passe, rotation si départ.
  2. Hook → ingress uniquement : HMAC ou Bearer, 202 Accepted rapide, file OPENCLAW_RUN_ID, forward vers ~/runners/vercel-post-deploy.sh sur le Mac loué.
  3. DEPLOY_URL=https://${VERCEL_URL}, VERCEL_DEPLOYMENT_ID, VERCEL_GIT_COMMIT_SHA ; refusez les hôtes hors liste.
  4. Même script versionné scripts/vercel/openclaw-post-deploy.sh pour local et SSH.
  5. 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.

Budget chauffe et corrélation

Plafonnez la chauffe (par exemple cinq minutes) et conservez x-vercel-id ou cf-ray pour relier la sonde au POP observé.

Preuve d’en-têtes

Attachez headers_diff.txt au dossier artefact afin que la revue sécurité confronte intention dépôt et réponses réelles.

Jeton passerelle

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.

Mac distant · Vercel · runners hook 7×24

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.

Deploy hooks Audits d’en-têtes Fumée WebKit

Pour poursuivre : index du blog, accueil MacWww, centre d’aide.

Louer un Mac — QA hook Vercel