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 без нужного флага.
-
Создай минимальный 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"); }, }; -
Опубликуй с
--temporaryиз каталога проекта:npx wrangler@latest deploy --temporaryПроверка proof-of-work добавляет небольшую автоматическую задержку. При успехе Wrangler печатает строку
Account: <name> (created)или(reused), ссылкуClaim URLи живой адресhttps://<worker>.<account>.workers.dev. -
Разбери адреса из этого вывода. Вместо чтения глазами запусти хелпер:
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"}. -
Проверь, что публикация действительно живая — одному только логу не верь. Дёрни живой адрес через
curlи убедись, что тело ответа совпадает с тем, что возвращает код:curl -sS <live_url> -
Итерируй. Правь код и публикуй заново той же командой
npx wrangler@latest deploy --temporary. В течение часового окна Wrangler переиспользует закэшированный временный аккаунт (Account: <name> (reused)), поэтому адрес не меняется. Снова дёрниcurl, чтобы убедиться в изменениях. -
Отдай пользователю ссылку присвоения. Скажи прямо: открыть её надо в течение 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 | Доступно |
| D1 | 1 база, 100 МБ на базу и 100 МБ всего |
| Durable Objects | Доступно |
| Hyperdrive | 2 конфигурации, 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.