← Cloudflare Workers / workers / ci-cd / builds
Дополнительные сценарии настройки
Монорепозитории
Монорепозиторий представляет собой единый репозиторий, который содержит несколько приложений. Такая структура полезна по ряду причин:
- Упрощённое управление зависимостями: Управляйте зависимостями всех Workers и общих пакетов из одного места с помощью таких инструментов, как рабочие пространства pnpm ↗ и syncpack ↗.
- Совместное использование и повторное применение кода: Легко создавайте общую логику, типы и утилиты и делитесь ими между Workers с помощью общих пакетов.
- Атомарные коммиты: Изменения, затрагивающие несколько Workers или общие библиотеки, можно объединять в один коммит: так историю проще понять, а риск несогласованности снижается.
- Единообразные инструменты: Используйте одинаковые конфигурации сборки, тестирования, линтинга и форматирования (например, через Turborepo ↗ для оркестрации задач и общих конфигураций в
packages/) для всех проектов, обеспечивая единообразие инструментов и качества кода в Workers. - Упрощённый рефакторинг: Рефакторинг кода, затрагивающего несколько Workers или общих пакетов, значительно проще выполнять в едином репозитории.
Примеры монорепозиториев Workers:
- cloudflare/mcp-server-cloudflare ↗
- jahands/workers-monorepo-template ↗
- cloudflare/templates ↗
- cloudflare/workers-sdk ↗
Начало работы
Чтобы настроить процесс работы с monorepo:
- Найдите Workers, связанные с вашим проектом, в Дашборд Workers & Pages ↗.
- Подключите монорепозиторий к каждому Worker в репозитории.
- Задайте корневую директорию для каждого Worker, чтобы указать расположение его
wrangler.jsoncи где должны выполняться команды сборки и развёртывания. - При необходимости настройте уникальные команды сборки и деплоя для каждого Worker.
- При необходимости настройте пути отслеживания сборки для каждого Worker, чтобы отслеживать изменения по определённым путям.
Когда в монорепозиторий добавляется новый коммит, для каждого Worker запускается новая сборка и развертывание, если изменение затрагивает один из его отслеживаемых путей. Статус каждой сборки, связанной с репозиторием, также можно проверить в GitHub с помощью запуски проверок или в GitLab с помощью статусы коммитов.
Пример
В примере ecommerce-monorepo, проект Workers должен быть создан для product-service, order-service, а также notification-service.
Git подключение к ecommerce-monorepo следует добавить во все проекты Workers. Если вы используете инструмент для монорепозиториев, например Turborepo ↗, вы можете настроить отдельную команду развёртывания для каждого Worker, например, turbo deploy -F product-service.
Задайте корневую директорию каждого Worker в соответствии с расположением его файла конфигурации Wrangler. Например, для product-service, корневым каталогом должен быть /workers/product-service/. При желании вы можете добавить пути отслеживания сборки чтобы оптимизировать сборки.
Когда новый коммит добавляется в ecommerce-monorepo, для каждого из Workers будет запущена сборка и развертывание, если изменение попадает в его включенные пути отслеживания, с использованием настроенных для этого Worker команд.
- ecommerce-monorepo/
- workers/
- product-service/
- src/
- wrangler.jsonc
- order-service/
- src/
- wrangler.jsonc
- notification-service/
- src/
- wrangler.jsonc
- product-service/
- packages/
- schema/
- README.md
- workers/
Окружения Wrangler
Вы можете использовать Окружения Wrangler с Workers Builds, выполнив следующие шаги:
- Развертывание через Wrangler чтобы создать Workers для ваших окружений в Dashboard, если их у вас ещё нет.
- Найдите Workers для ваших окружений. Обычно они называются
[name of Worker] - [environment name]. - Подключите репозиторий к каждому из Workers для вашего окружения.
- В каждом из Workers измените команды Wrangler, добавив флаг
--env: <environment name>в конфигурациях сборки как для команды развёртывания, так и для команды развёртывания непродакшен-ветки (если применимо).
При обнаружении нового коммита в репозитории для каждого связанного Worker запускается новая сборка и развертывание.
Пример
Предположим, у вас есть Worker с именем my-worker, и вы хотите настроить два окружения staging и production задан в wrangler.jsonc. Если вы ещё этого не сделали, можно развернуть my-worker для каждого окружения с помощью команд wrangler deploy --env staging и wrangler deploy --env production.
В Cloudflare Dashboard вы найдёте два Worker my-worker-staging и my-worker-production. Затем подключите Git-репозиторий для Worker, my-worker, к обоим Workers окружений. В конфигурациях сборки каждого Worker окружения измените команды развёртывания на npx wrangler deploy --env staging и npx wrangler deploy --env production и команды развёртывания для непроизводственной ветки были npx wrangler versions upload --env staging и npx wrangler versions upload --env production соответственно.