Тестирование и развертывание из CI
Работоспособный цикл от первого редактирования до автоматического развертывания с заранее указанными ограничениями локальной эмуляции.
1. Запустите его локально
aura functions serve запускает ваш файл с помощью Deno и перезапускает его при сохранении.
Это обычный сервер Deno. По сравнению с платформой он имеет:
- Нет заголовков платформы.
x-aura-roleиx-aura-user-idотсутствуют: отправьте их самостоятельно сcurl -Hдля проверки веток авторизации. - Никаких секретов. Передайте их в свою оболочку:
STRIPE_SECRET_KEY=sk_test_… aura functions serve checkout. - Никаких ограничений. Память, тайм-аут, размер тела и ограничения скорости не применяются.
- Простые запросы. Вы вызываете функцию напрямую, поэтому
pathиmethod— это параметры вашегоcurl, а не параметрыinvokeSDK.
SDK не может быть нацелен на этот сервер, поскольку invoke вызывает маршрут платформы. Проверьте путь SDK на реальном проекте, как показано ниже.
2. Проверьте это по-настоящему
Создайте проект для разработки (см. вашу первую функцию), разверните там функцию и протестируйте ее с помощью SDK. Сюда входят заголовки идентификаторов платформы, ограничения и классы ошибок.
Советы:
- Используйте специальный проект, а не производственную версию, и храните его ключи в секретах CI.
- Ограничение частоты вызовов составляет 15 вызовов, а затем 1 в секунду на каждый IP-адрес. Разместите тесты или запускайте их последовательно.
3. Развертывание из CI
Интерфейс командной строки aura устанавливается из npm в macOS Apple Silicon и из других источников, поэтому задание CI в Linux упрощается с помощью HTTP API. Развертывание осуществляется по одному POST на функцию, аутентифицированному ключом service_role. Этот точный цикл был запущен в реальном проекте, и после этого функция ответила.
Факты, которые делают его безопасным при каждом нажатии:
POSTзаменяет код существующей функции, а сохраняет свои секреты, поскольку в теле нетenv_vars.- Функция является однофайловой: относительный импорт не осуществляется. Сначала создайте пакет, если вы используете локальные модули.
- На сервере нет истории версий. Ваша история Git — это откат: чтобы вернуться назад, отмените фиксацию и позвольте CI снова развернуться.
Затем запустите интеграционные тесты для только что развернутого проекта в следующем задании.
4. Разработка, постановка и производство
Один проект — одна среда. Создайте по одному проекту для каждой среды, каждый со своим URL-адресом и ключами, и позвольте CI выбрать цель:
| Среда | Проект | Развернуто, когда |
|---|---|---|
| Разработка | по одному на каждого разработчика или общий | по запросу, из филиала |
| Постановка | my-app-staging | каждое нажатие на main |
| Производство | my-app | тег выпуска после прохождения промежуточных тестов |
Сохраните AURA_PROJECT_URL и AURA_SERVICE_ROLE_KEY для каждой среды GitHub и установите секреты каждой функции отдельно в каждом проекте. Между проектами ничего не делится.