Cloudflare Pages · Deploy Hook · Кэш · Заголовки · OpenClaw · Удалённый Mac · 2026

OpenClaw на фронтенде в 2026 году:
Cloudflare Pages Deploy Hook → смоук на Mac, аудит security headers и обратная передача сводки сборки

16.04.2026 Фронтенд / edge-релизы 9 мин чтения
Постоянный slug: 2026-openclaw-cloudflare-pages-deploy-hook-remote-mac-howto.html

Для кого: команды на Cloudflare Pages, которые борются с «липким» edge-кэшем, регрессиями CSP/HSTS и наслоением Workers после деплоя. В отличие от сценария с Netlify Deploy Hook, здесь — нативная цепочка CF: план инвалидации кэша, diff файла _headers, пакетный curl по списку URL, оркестрация на шлюзе OpenClaw и дайджест сбоев рядом с метриками сборки в PR. Дополнительно сверяйтесь с преддеплойным смоуком и приёмкой Service Worker в Safari, если HTML оборачивает SW.

01 Почему одного Deploy Hook мало

Deploy Hook означает «сборка закончилась», а не то, что CSP, HSTS и Permissions-Policy пережили слияние Workers и статического _headers на периметре.

  1. Задержка инвалидации. Без целевого purge или версионирования имён ассетов смоук в CI может видеть свежие артефакты, а пользователь — старый документ с edge.
  2. Заголовки как совмещённая политика. Файл в Git не всегда совпадает с байтами ответа; нужен diff эффективных заголовков после выката.
  3. Реальность браузеров. Safari и Chromium по-прежнему расходятся по таймингу SW и партициям хранилища — честный прогон Playwright остаётся на удалённом Mac.

02 Netlify hooks и Cloudflare Pages hooks

Сигналы похожи; семантика edge — разная. Ниже — краткая матрица, чтобы не путать с Netlify-цепочкой.

Тема Акцент Netlify Акцент Cloudflare Pages
Контракт хука Сборка завершена; preview URL — первый класс. Проекты prod/preview; к хуку добавляют план purge и маршруты Workers.
Источник заголовков Блоки netlify.toml. _headers в репо плюс правила в панели; нужен curl-diff с живым ответом.
Риск устаревания Паттерны CDN зависят от класса ассета. Явные API инвалидации и теги; HTML и хэшированные чанки раздельно.
Проверка Прогрев GET и Playwright остаются валидны. Добавьте пакетный curl по нескольким входным URL и цепочкам редиректов.

03 Воспроизводимая цепочка в shell

Проверьте X-Hook-Secret, поставьте в очередь OPENCLAW_RUN_ID, ответьте 202 Accepted; тяжёлую работу выполняйте на Mac.

  1. Контекст деплоя: экспортируйте GIT_SHA, CF_PAGES_COMMIT_SHA или метаданные провайдера, DEPLOYMENT_ID и публичный PAGES_URL для тестов.
  2. Инвалидация кэша: точечный purge для HTML-оболочки и нефингерпринтного JSON либо опора на контент-хэши в именах файлов бандлера.
  3. Прогрев с backoff: цикл curl -fsS -o /dev/null -w '%{http_code}' "$PAGES_URL/healthz" до 200 или дедлайна; при 429 после волн purge — джиттер между попытками.
  4. Diff правил заголовков: снимите предыдущий тег, выполните diff -u для _headers, сохраните текстовый артефакт рядом со сборкой для аудита.
  5. Пакетный curl: список URL построчно через xargs -n1; по каждому — curl -sSI и проверка strict-transport-security, content-security-policy, permissions-policy; падение, если пропала обязательная директива.
  6. Смоук Playwright: npx playwright test tests/smoke --project=webkit --project=chromium против PAGES_URL после прохождения curl-гейтов.
  7. JSON сводки: .openclaw/reports/build_summary.json с schema: "build_summary/v1", таймингами, строками упавшего curl, диффом заголовков и ссылками на trace; POST с Idempotency-Key: ${GIT_SHA}:${DEPLOYMENT_ID}:cfpages.

04 Шлюз OpenClaw: оркестрация и дайджест сбоев

Шлюз OpenClaw выстраивает curl_batch, headers_diff, playwright_smoke и останавливается на первом ненулевом коде выхода. Пишите NDJSON с полями phase, attempt, http_status, openclaw_run_id.

В дайджесте ошибок фиксируйте первый плохой URL, отсутствующий заголовок, id purge и deployment id. Успешные прогоны всё равно логируйте cf_cache_status, чтобы доказать, что прогрев получил свежие байты.

05 Операционные ограничения

Область purge

Зафиксируйте в runbook: список URL, префикс или тег; полный purge зоны — последний резерв из‑за лимитов API в плотных релизных окнах.

Артефакт diff

Храните unified diff _headers рядом с deployment id: ревьюеры безопасности сопоставляют намерение репозитория с живыми ответами curl.

Токены

Ограничьте OPENCLAW_GATEWAY_TOKEN только POST сводки и API очереди; токены Cloudflare API не кладите в клиентские бандлы и публичные логи.

06 FAQ: хуки, кэш и заголовки

Симптом Вероятная причина Что проверить
Смоук то проходит, то нет Гонка завершения purge или разные POP. Увеличьте дедлайн прогрева, логируйте cf-ray и age, повторите curl-батч до Playwright.
CSP только в prod «пропала» Другое правило перекрывает статические заголовки. Сравните curl -sSI для apex и www; проверьте Workers на дублирующую инъекцию заголовков.
Хук отвечает 403 Сменился секрет или неверный slug проекта. Пересоздайте URL хука, обновите vault, удалите устаревшие endpoint из внутренних заметок.
429 от API Cloudflare Всплеск purge или вторичные лимиты. Шардирование purge, backoff с джиттером, кэш метаданных деплоя на несколько минут.

Заменяет ли curl-батч Playwright?

Нет. Curl доказывает транспорт и редиректы; браузер по-другому применяет CSP и mixed content. Используйте curl как быстрый гейт, затем Playwright для DOM и хранилищ.

Где всё ещё полезна статья про Netlify?

Там — эталон гигиены хука, полей NDJSON и идемпотентности callback. Подставьте URL провайдера Pages и добавьте шаги purge плюс _headers из этого руководства.

Удалённый Mac · CF Pages · хуки 7×24

Запускайте цепочки Cloudflare Hook на реальном Apple-железе

Держите Deploy Hook на стабильном runner с Safari и Chromium, стримьте сводки OpenClaw и не привязывайте релизы к ноутбуку. Тарифы и помощьбез обязательного входа; когда edge-релизы перерастают минуты CI — аренда или покупка удалённого Mac под автоматизацию и постоянные webhook-триггеры.

Deploy hooks Аудит заголовков Смоук WebKit
Mac под CF Pages Hook QA