Развёртывания, превью и откаты.
Как push выходит в работу, превью для веток, возврат к прежней версии, команда выпуска для миграций, настройки сборки, хуки развёртывания, режим обслуживания и пароль для превью.
Когда приложение уже работает, панель для выпуска изменений нужна редко: сделайте push в ветку, и новая версия выйдет в работу сама. В этой статье — всё, что с этим связано: вкладка Развёртывания, Превью, вкладка Процессы и несколько переключателей в Настройки.
Автоматическое развёртывание при каждом push
Каждый push в ветку приложения собирает последний коммит и разворачивает его. Новая версия запускается рядом с работающей и начинает принимать посетителей только после того, как ответит; если она не запустилась, продолжает работать предыдущая версия, а мы сообщаем вам об этом по электронной почте (и в Telegram, если вы его подключили).
Push, сделанный, пока другая сборка ещё ждёт в очереди, присоединяется к этой сборке, поэтому серия push-ов не создаёт длинную очередь.
Это можно отключить в Настройки → Разворачивать каждый push. Когда переключатель выключен, вы разворачиваете из панели, через API или хук развёртывания.
Развёртывание из панели
На вкладке Развёртывания перечислены все развёртывания: чем запущено (push, панель, откат, хук развёртывания), коммит, продолжительность и статус. Нажмите на развёртывание, чтобы увидеть полный журнал сборки.
Развернуть заново предлагает два варианта:
- Собрать последний коммит — берёт самый новый код из ветки и собирает его.
- Развернуть текущую версию заново — применяет изменённые переменные без новой сборки. Используйте его после изменения Переменные.
В меню рядом с Открыть — те же два действия, а также Перезагрузить.
Откат
Можно вернуться к любой из последних 5 успешных версий. На вкладке Развёртывания нажмите Откатить у нужной версии и подтвердите. Прежняя версия запускается рядом с текущей и принимает работу на себя, как только ответит, — новой сборки нет.
Откат не отменяет изменений в базе данных. Если выпуск изменил структуру базы данных, восстановите и базу — см. Базы данных.
Превью для веток
Push в любую другую ветку получает собственное превью — отдельный адрес, где можно проверить изменения до выхода в работу. Превью открываются на вкладке Превью.
- До 3 превью одновременно, входят в вашу цену.
- Превью без новых push-ов в течение 7 дней удаляется. Оно создаётся снова при следующем push в эту ветку.
- Превью получают только предназначенные для них переменные — см. Переменные окружения.
- Превью создаются для основного сервиса проекта, а не для его других сервисов.
Пароль для превью
На вкладке Превью: Пароль для превью → Запрашивать пароль. Введите имя пользователя и пароль (не короче 8 символов). После этого открыть превью смогут только те, у кого есть пароль; само приложение остаётся открытым для всех.
Команда выпуска (миграции)
Вкладка Процессы → Команда выпуска. Она выполняется один раз при каждом развёртывании, до того как новая версия начнёт принимать посетителей, — обычно это миграции базы данных. Если команда завершилась ошибкой, развёртывание останавливается и текущая версия продолжает работать, поэтому неудачная миграция никогда не дойдёт до ваших посетителей.
Для фреймворков, у которых есть такая команда, мы её предлагаем:
| Фреймворк | Рекомендуемая команда выпуска |
|---|---|
| Laravel | php artisan migrate --force |
| Django | python manage.py migrate --noinput |
| Prisma (Node.js) | npx prisma migrate deploy |
Использовать рекомендуемую команду оставляет её; можно также ввести свою команду или выбрать Нет. Изменения действуют со следующего развёртывания.
Настройки сборки
В Настройки → Настройки сборки можно изменить то, что мы определили:
- Команда установки — например,
npm ci - Команда сборки — например,
npm run build - Команда запуска — команда, которая запускает ваше приложение. Оно должно слушать порт из
$PORT. - Папка результата — для статических сайтов: папка с собранными файлами.
- Папка проекта — для репозитория с несколькими проектами.
Оставьте поле пустым, чтобы использовать то, что мы определили. Следующее развёртывание собирается с новыми настройками; Собрать сейчас запускает его сразу.
В Настройки также задаётся Ветка, которая разворачивается.
Хуки развёртывания
Настройки → Хуки развёртывания → Создать хук. Хук развёртывания — это закрытый адрес: когда другой сервис отправляет на него POST-запрос, последний коммит вашей ветки собирается и разворачивается. Типичный пример — CMS, которая пересобирает сайт после публикации.
curl -X POST "<адрес хука из панели>"- Адрес показывается один раз — скопируйте его при создании хука. Любой, у кого он есть, может запустить развёртывание, поэтому не передавайте его посторонним.
- До 10 развёртываний в час на один хук. Вызов, поступивший, пока сборка ещё ждёт, присоединяется к ней.
- Отозвать сразу отключает адрес; сервисам, которые его вызывают, потребуется новый.
Режим обслуживания
Настройки → Режим обслуживания → Показывать страницу обслуживания. Вместо приложения посетители видят короткую страницу с вашим сообщением; если оставить сообщение пустым, будет показано «Мы вносим небольшие улучшения. Загляните чуть позже.»
Само приложение продолжает работать, поэтому вы можете всё проверить, прежде чем снова открыть его. Личная ссылка для вас показывает приложение как обычно на том устройстве, где её открыли, в течение 12 часов. Новая ссылка создаёт новую ссылку; старая перестаёт работать.
Выключите переключатель, чтобы снова открыть приложение для посетителей.
Уведомления о развёртываниях
Мы пишем вам по электронной почте (и в Telegram, если вы его подключили), когда развёртывание не завершилось. Чтобы события получала и ваша команда — новая версия вышла в работу, развёртывание не завершилось, сервис остановился или снова заработал, высокая загрузка памяти или процессора, резервная копия или диск базы данных, — добавьте Slack, Discord или собственный вебхук в Настройки → Уведомления для команды. Сообщения вебхука — это JSON, подписанный секретом, который показывается один раз, в заголовке X-Rivervo-Signature.