Netlify · Deploy Hook · OpenClaw · Remote Mac · Smoke · Links · 2026

2026 OpenClaw Frontend-Praxis:
Netlify Deploy Hook → Remote Mac: Smoke, Tote-Link-Patrouille & Build-Summary-Rückmeldung

14. April 2026 Frontend / Release-Automatisierung ca. 10 Min.

Zielgruppe: Frontend-Teams mit statischen Sites oder SSR-Adaptern auf Netlify, die nach jedem Deploy Abnahme in echten Browsern wollen — ohne dass ein Laptop zugeklappt wird. Dieser Leitfaden beschreibt eine Deploy Hook → Skript-Kette auf einem Remote Mac: Live-URL erwärmen, Smoke und Tote-Link-Patrouille ausführen, danach eine Build-Summary in Chat oder PR-Thread zurückmelden. Ergänzend helfen OpenClaw Smoke- und Pre-Deploy-Muster, Lighthouse-, Link- und Barrierefreiheits-Gates sowie Build-Metriken → PR-Summary, wenn neben Narrativ auch Zahlen ins Ticket sollen.

01 Warum Deploy Hooks neben OpenClaw auf einem Remote Mac liegen

Netlify beweist, dass Ihr Build kompiliert — Kundinnen und Kunden sehen dennoch Minuten später Routing-Fehler, hartnäckige Edge-Caches und nur in WebKit auftretende Regressionen. Ein Deploy Hook ist der kleinste Plattform-Vertrag, der sagt: „Etwas ist fertig — reagiere.“ Wenn Sie dieses Signal an einen 7×24 erreichbaren Remote Mac führen, gewinnen Sie Safari-taugliche Browser, stabile Screen-Sessions und Automatisierung, die nicht stirbt, sobald jemand den Deckel zuklappt.

OpenClaw entfaltet sich dort, wo ein Runner Playwright, curl und kleine Node-Helfer auf einem POSIX-Host orchestrieren kann. Behandeln Sie den Hook als Job einreihen, nicht als 40 Minuten Tests inline ausführen: schnell quittieren, dauerhafte Arbeit in eine Warteschlange legen und strukturierte Logs streamen — damit Bereitschaft ohne zwölf Dashboards Deploy-IDs vergleichen kann.

Der Mehrwert von Browser-Automatisierung auf Apple-Hardware liegt in echten WebKit-Pfaden, GPU-Timing und denselben TLS-/Cookie-Schichten wie beim Publikum. Linux-Container ersetzen das nicht für Safari-Sign-off; ein gemieteter Mac schließt die Lücke und lässt sich per Hook rund um die Uhr triggern — ideal für Teams in mehreren Zeitzonen.

02 Architektur: von Netlify bis zum Callback

Netlify beendet einen Build und kann optional Ihre Build-Hook-URL per HTTP POST aufrufen. Diese Anfrage sollte einen Ingress treffen, den Sie kontrollieren: OpenClaw-Gateway, ein kleiner Cloudflare Worker oder nginx auf dem Mac mit TLS. Der Ingress prüft ein gemeinsames Geheimnis, reiht OPENCLAW_RUN_ID ein und startet ~/runners/netlify-post-deploy.sh (oder ein Node-Äquivalent).

Der Runner löst DEPLOY_PRIME_URL auf — entweder die Produktionsdomain oder eine Deploy Preview über die Netlify-API mit $NETLIFY_AUTH_TOKEN und DEPLOY_ID. Anschließend laufen drei Phasen nacheinander: (A) Warm-up-Probe, (B) Smoke plus Link-Graph, (C) Build-Summary-POST. Jede Phase schreibt JSON-Zeilen nach .openclaw/reports/deploy_hook.ndjson, sodass Sie Logs nach S3 schicken oder das Tail an CI anhängen können, ohne Netlify Zugriff auf GitHub zu geben.

Lokal und remote gilt dieselbe Skript-Datei: Entwicklerinnen führen Trockenläufe auf dem eigenen Mac aus, Produktion nutzt den gemieteten Host — gleiche Pfade, weniger „works on my machine“.

03 Reproduzierbare Skript-Kette (lokal oder remote)

Legen Sie die folgende Struktur als scripts/netlify/openclaw-post-deploy.sh ins Repository, setzen Sie das Executable-Bit, und zeigen Sie den Netlify-Hook (oder einen GitHub-Action-curl) auf den Ingress, der das Skript startet. Derselbe Einstieg läuft auf dem Entwickler-Mac zum Testen und auf dem Remote Mac in Produktion.

  1. Kontext exportieren: export GIT_SHA="${COMMIT_REF:-$(git rev-parse HEAD)}", export NETLIFY_DEPLOY_ID="${DEPLOY_ID:-unknown}", export OPENCLAW_RUN_ID="$(uuidgen)" sowie DEPLOY_URL aus Hook-JSON oder Netlify-CLI-Ausgabe mappen.
  2. Warm-up mit Retries: Schleife mit curl -fsS -o /dev/null -w '%{http_code}' "$DEPLOY_URL/healthz" (oder leichtem Dokument) bis 200 oder Deadline; Pausen mit exponentiellem Backoff, Obergrenze z. B. 30 s, damit 429 die Edge nicht flutet.
  3. Smoke-Tests: npx playwright test tests/smoke --project=webkit --project=chromium gegen DEPLOY_URL; Suite unter zehn Minuten halten, falls der Hook aus Versehen synchron aufgerufen wird.
  4. Tote-Link-Patrouille: interne Anker aus /sitemap.xml oder einer kuratierten Routenliste crawlen; pro URL url, final_status, redirect_chain, content_type protokollieren. Stufe fehlschlagen, wenn Pflicht-Routen 404 liefern oder Endlosschleifen entstehen.
  5. Build-Summary-JSON: Zeiten aus Playwright und Crawler in .openclaw/reports/build_summary.json mit schema: "build_summary/v1", git_sha, netlify_deploy_id, smoke_ms, link_scan_ms, failed_cases[] und exit_code mergen.
  6. Callback: JSON per POST an PR-Webhook oder Slack-kompatiblen Endpunkt mit Authorization: Bearer $OPENCLAW_GATEWAY_TOKEN und Idempotency-Key: ${GIT_SHA}:${NETLIFY_DEPLOY_ID}:summary, damit doppelte Hook-Lieferungen keine Spam-Fäden erzeugen.

Brauchen Sie reichere UX-Assertions vor dieser Kette, nutzen Sie die verlinkten Lighthouse-/a11y-Leitfäden; der Post-Deploy-Hook bleibt auf schnelle Regressionssignale fokussiert, die Nutzer sofort merken.

04 Strukturierte Log-Felder, Retries und Betriebshygiene

Jede NDJSON-Zeile sollte dieselben Schlüssel tragen — Dashboards und Menschen sprechen dann dieselbe Sprache:

  • ts ISO-8601, level, openclaw_run_id, git_sha, netlify_deploy_id, phase (warmup | smoke | links | callback).
  • attempt (1-basiert), http_status oder curl_exit, duration_ms, url (Tokens redigieren), error_class (dns, tls, timeout, assert).
  • bei Bedarf playwright_project plus trace_path statt Geheimnisse in Tickets zu pasten.

Retry-Richtlinie: idempotente GET-Warm-ups bei 429, 502, 503 und Verbindungs-Resets mit jitterndem exponentiellem Backoff (Beispiel: Basis 2 s, Faktor 1,8, maximal sechs Versuche). Mutierende Smoke-Flows nicht blind wiederholen; Suite erst erneut starten, wenn sich Deploy-ID geändert hat oder Caches gezielt invalidiert wurden.

Zahlen aus Dauer und Cache-Hits lassen sich mit dem verlinkten Build-Metriken → PR-Summary-Muster spiegeln, damit Produktmanagerinnen Latenz-Regressionen neben Text sehen.

05 HTTP-4xx-/5xx-FAQ für Hooks und Callbacks

Status Typische Bedeutung Prüfpunkte
400 JSON am Callback fehlerhaft oder Pflichtfelder fehlen. build_summary/v1 in CI gegen JSON Schema validieren; Server-Fehlertext auf warn ohne Geheimnisse loggen.
401 / 403 HMAC/Bearer am Hook falsch oder OAuth-Scopes für PR-Kommentare zu eng. OPENCLAW_GATEWAY_TOKEN rotieren, GitHub-PAT mit pull_requests: write prüfen, JWT-Uhren-Skew ausschließen.
404 Veralteter Deploy-Hook, gelöschte Site oder falscher Branch-Slug. Hook neu erzeugen, Vault-Einträge aktualisieren, Docs mit grep auf alte URLs prüfen.
409 Idempotenz-Kollision — Callback hat Duplikat dedupliziert. Bei identischer Summary als Erfolg werten; sonst Idempotenz-Namespace erhöhen.
429 Sekundärlimits bei Netlify-API oder GitHub während Summary-Bursts. Backoff, Hooks pro Umgebung sharden, Deploy-Metadaten fünf Minuten cachen.
502 / 504 Edge-Cold-Start, langsames Aufwachen von Functions oder TLS-Middlebox. Warm-up-Frist verlängern, DNS zur richtigen Preview verifizieren, curl -v vom Remote Mac mit lokalen Traces vergleichen.

Soll der Deploy Hook Tests direkt aufrufen?

Nur für triviale Pings. Lange Playwright-Suites gehören in eine Worker-Warteschlange, damit Netlify und Ihr Ingress keine halb offenen HTTP-Transaktionen halten. Eigenen Receiver bauen: schnell 202 Accepted zurückgeben.

Wo zeigen sich Safari-exklusive Fehler?

In WebKit-Assertions und umgeleiteten Asset-Hosts. --project=webkit immer auf Apple-Hardware ausführen; Kundinnen-Safari lässt sich so näher abbilden als auf reinem Linux-CI.

Remote Mac · 7×24 · Safari + Chromium-Automatisierung

Netlify-Hooks mit einem immer erreichbaren Mac-Runner speisen

OpenClaw-Flows starten, sobald Netlify ausliefert — Playwright-Traces auf echter Apple-Hardware, keine nächtlichen Laptop-Ausfälle. Preise und Hilfe sind ohne Login einsehbar; mieten oder kaufen Sie Kapazität, wenn gemeinsame CI-Minuten nicht reichen.

7×24-Trigger WebKit-Smoke Browser-Automatisierung
Mac mieten — Deploy-Hook-QA