Cloudflare Temporary Deploy

Публикация Worker на живой URL без аккаунта через wrangler —temporary.

Метаданные навыка

ИсточникОпциональный — установка: hermes skills install official/web-development/cloudflare-temporary-deploy
Путьoptional-skills/web-development/cloudflare-temporary-deploy
Версия1.0.0
АвторHermes Agent
ЛицензияMIT
Платформыlinux, macos, windows
Тегиcloudflare, workers, wrangler, deploy, temporary, agent, serverless, web-development

Справочник: полный SKILL.md

инфо

Ниже — полное определение навыка, которое Hermes Agent загружает при его активации. Именно этот текст агент получает как инструкцию в момент работы навыка.

Навык Cloudflare Temporary Deploy

Публикация Cloudflare Worker на живой адрес workers.dev вообще без заведения аккаунта — командой wrangler deploy --temporary. Cloudflare заводит одноразовый аккаунт, публикует код и печатает ссылку для присвоения, действительную 60 минут; неприсвоенные аккаунты удаляются сами. Агент получает плотный цикл «написал — опубликовал — проверил» без OAuth, регистрации и копирования токенов.

Навык НЕ покрывает продакшн-публикации (для них нужен wrangler login и постоянный аккаунт) и продукты Cloudflare сверх лимитов временного аккаунта, перечисленных ниже.

Когда использовать

Загружай навык, когда пользователь хочет:

  • Выкатить написанный агентом код на живой URL без предварительного создания аккаунта Cloudflare — «опубликуй и дай ссылку»
  • Итерировать в фоновой или автономной сессии, где шаг с браузерным OAuth стал бы полной остановкой
  • Быстро прототипировать или оценить Workers на одноразовой, но присваиваемой площадке
  • Собрать самопроверяющийся цикл публикации — опубликовать, дёрнуть живой URL через curl, сверить вывод с кодом, опубликовать снова

Когда НЕ использовать

  • Продакшн и CI/CD → нужен постоянный аккаунт (wrangler login либо CLOUDFLARE_API_TOKEN). При наличии любых учётных данных --temporary падает с ошибкой.
  • Wrangler уже аутентифицирован → --temporary вернёт ошибку, так и задумано. Выполняйте wrangler logout только если пользователь явно хочет одноразовую публикацию.
  • Долгоживущий хостинг → временные публикации удаляются через 60 минут, если их не присвоить.

Что потребуется

  • Wrangler версии 4.102.0 или новее. Именно в ней появился --temporary, в более ранних его нет. Проверка: npx wrangler@latest --version.
  • Node 18+ и npm (либо npx, yarn, pnpm). Глобальная установка не нужна — работает npx wrangler@latest.
  • Никаких учётных данных Cloudflare в окружении. --temporary работает только на неаутентифицированном Wrangler: без входа через OAuth, без переменных CLOUDFLARE_API_TOKEN и CLOUDFLARE_API_KEY, без кэша OAuth в ~/.wrangler и ~/.config/.wrangler. Берите окружение инструмента terminal как есть и не выставляйте эти переменные.
  • Исходящий доступ к cloudflare.com и workers.dev.
  • Использование --temporary означает согласие с условиями обслуживания и политикой конфиденциальности Cloudflare.

Порядок запуска

Каждый шаг выполняй инструментом terminal. Всегда фиксируй версию (wrangler@latest либо wrangler@4.102.0 и новее), чтобы случайно не попасть на старый глобальный wrangler без нужного флага.

  1. Создай минимальный Worker (пропусти, если проект уже есть). Воркеру нужны wrangler.toml (или wrangler.jsonc) и входной скрипт. Минимальный пример на TypeScript — пиши через write_file:

    wrangler.jsonc:

    {
      "name": "hello-agent",
      "main": "src/index.ts",
      "compatibility_date": "2025-01-01"
    }

    src/index.ts:

    export default {
      async fetch(): Promise<Response> {
        return new Response("hello cloudflare");
      },
    };
  2. Опубликуй с --temporary из каталога проекта:

    npx wrangler@latest deploy --temporary

    Проверка proof-of-work добавляет небольшую автоматическую задержку. При успехе Wrangler печатает строку Account: <name> (created) или (reused), ссылку Claim URL и живой адрес https://<worker>.<account>.workers.dev.

  3. Разбери адреса из этого вывода. Вместо чтения глазами запусти хелпер:

    npx wrangler@latest deploy --temporary 2>&1 | python scripts/parse_deploy_output.py

    (Путь scripts/parse_deploy_output.py разверни в абсолютный путь этого навыка.) Он печатает JSON: {"live_url", "claim_url", "account", "account_state", "expires_minutes", "deployed"}.

  4. Проверь, что публикация действительно живая — одному только логу не верь. Дёрни живой адрес через curl и убедись, что тело ответа совпадает с тем, что возвращает код:

    curl -sS <live_url>
  5. Итерируй. Правь код и публикуй заново той же командой npx wrangler@latest deploy --temporary. В течение часового окна Wrangler переиспользует закэшированный временный аккаунт (Account: <name> (reused)), поэтому адрес не меняется. Снова дёрни curl, чтобы убедиться в изменениях.

  6. Отдай пользователю ссылку присвоения. Скажи прямо: открыть её надо в течение 60 минут, чтобы сохранить публикацию и все ресурсы; иначе всё удалится само. Обращайся с этой ссылкой как с секретом — она даёт владение аккаунтом.

Краткая шпаргалка

ШагКоманда
Проверить версию (нужна 4.102.0+)npx wrangler@latest --version
Опубликовать (без аккаунта)npx wrangler@latest deploy --temporary
Опубликовать и разобрать адресаnpx wrangler@latest deploy --temporary 2>&1 | python scripts/parse_deploy_output.py
Проверить живой адресcurl -sS <live_url>
Сбросить кэш временного аккаунтаnpx wrangler@latest logout

Лимиты продуктов на временном аккаунте

ПродуктЛимит на временном аккаунте
WorkersПубликация на workers.dev
Статические ассетыДо 1000 файлов, по 5 МиБ каждый
KVДоступно
D11 база, 100 МБ на базу и 100 МБ всего
Durable ObjectsДоступно
Hyperdrive2 конфигурации, 10 соединений
QueuesДо 10
Сертификаты SSL/TLSДоступно

Грабли

  • Флага --temporary нет в wrangler deploy --help, и он не глобальный. Он намеренно скрыт и всплывает динамически: когда неаутентифицированный wrangler deploy падает, Wrangler пишет «rerun with --temporary». Не делай вывод об отсутствии флага по --help — проверяй версию.
  • Старый глобальный wrangler. Залежавшаяся глобальная установка (< 4.102.0) молча не имеет флага. Всегда вызывай npx wrangler@latest или зафиксированную версию >=4.102.0, чтобы контролировать происходящее.
  • Есть авторизация — сразу ошибка. Если когда-либо выполнялся wrangler login либо выставлены CLOUDFLARE_API_TOKEN/CLOUDFLARE_API_KEY, --temporary падает. Либо снимите переменную в этом шелле, либо выполните wrangler logout. Никогда не сносите настоящие учётные данные пользователя, не сказав ему об этом.
  • Ограничение частоты. Слишком быстрое создание временных аккаунтов не проходит. В пределах часового окна переиспользуйте закэшированный аккаунт простой повторной публикацией, а не выбивайте новый; попали под ограничение — подождите или возьмите постоянный аккаунт.
  • Жёсткий срок в 60 минут, продлить нельзя. Если публикация должна прожить дольше часа, пользователю придётся её присвоить. Скажите об этом внятно.
  • curl какое-то время может отдавать старое тело после повторной публикации. У workers.dev короткий кэш на краю сети; строка (reused) и новый Current Version ID подтверждают успешную публикацию, даже если curl пару секунд показывает старое. Повторите запрос или добавьте параметр против кэширования, прежде чем решить, что публикация не прошла.
  • Не выкладывайте ссылку присвоения в общий транскрипт «просто как ссылку». По сути это учётные данные.

Проверка

  • npx wrangler@latest --version возвращает >= 4.102.0.
  • npx wrangler@latest deploy --temporary печатает живой адрес на workers.dev и ссылку присвоения вида claim-preview?claimToken=.
  • curl -sS <live_url> возвращает ровно то тело ответа, которое даёт код воркера.
  • Повторная публикация сообщает Account: <name> (reused), а живой адрес не меняется.
  • Самопроверка скрипта-парсера проходит: python scripts/parse_deploy_output.py --selftest.
перевод и редактура:

обновлено

⌕ ESC