nodbox
Разделы документации

Источники кода

Репозиторий GitHub, GitLab или Bitbucket, архив с папкой проекта, готовый образ из публичного реестра: как подключить каждый.

Платформа запускает код из трёх источников: репозитория GitHub, GitLab или Bitbucket, zip-архива с папкой проекта и готового образа. Источник выбирается при создании приложения, и от него зависит, как приложение обновляется.

Как выбрать источник

Источник Подходит для Новая версия
Репозиторий кода в git: GitHub, GitLab или Bitbucket заводится сама, по push в выбранную ветку
Архив папки проекта без git заказывается вручную, каждый раз с новой загрузкой архива
Образ уже собранного приложения заказывается вручную

Заказать версию вручную можно из панели или по API.

Репозиторий

Код берётся только через подключённый git-аккаунт: адрес репозитория вставлять не нужно, ты выбираешь его из списка. Так работают и приватные репозитории, и публичные.

Подключить можно GitHub, GitLab на gitlab.com и Bitbucket на bitbucket.org. Способ у каждого свой, он разобран на странице Подключение GitHub, GitLab и Bitbucket.

Платформа клонирует выбранную ветку, собирает приложение и выкатывает его. Каждый следующий push в эту ветку заводит новую версию сам, подробности - в разделе Автодеплой по push.

Архив

Архив - деплой без git: репозиторий не нужен. Упакуй папку проекта в zip и загрузи его в панели или по API. Подойдёт и архив самой папки, и архив её содержимого: результат один.

Каждая новая версия приложения из архива - это новая загрузка. Загрузка живёт 15 минут: за это время нужно залить архив и заказать версию, иначе загрузку придётся повторить. Одну загрузку можно потратить на одну версию.

Порядок для API:

  1. Создать загрузку
  2. Залить в неё архив
  3. Подтвердить загрузку
  4. Заказать версию, указав upload_id

Без новой загрузки приложение из архива выкатывается в двух случаях: при откате на прежнюю версию в пределах трёх последних и при запуске после остановки. Оба берут уже собранную версию.

Проверка архива

Платформа проверяет архив при деплое, а не при загрузке. Загрузка проверяет только, что файл на месте и не превышает допустимый размер. Остальное идёт на первом шаге деплоя: платформа читает список файлов до распаковки, а при распаковке ещё раз проверяет каждый путь и фактический объём.

Первая же нарушенная проверка отклоняет весь архив: отдельные файлы платформа не пропускает. Версия получает причину отказа, архив больше не используется, а повторить деплой с ним нельзя: нужны новая загрузка и новая версия. Отклонённый архив ничего не стоит, потому что тарификация начинается только с подтверждённого выката.

Причин отказа четыре:

Причина Что случилось
archive_invalid архив не разбирается: он пустой или содержит пути с выходом за пределы папки, абсолютные пути, букву диска, обратный слэш, символические ссылки, устройства, дубликаты имён, в том числе отличающиеся только регистром
archive_encrypted архив защищён паролем, а платформа пароль не спрашивает
compression_unsupported принимаются только методы сжатия store и deflate
limit_exceeded превышен один из потолков: объём, число файлов и записей, длина и глубина пути, коэффициент сжатия

Потолки по числу и форме файлов:

  • до 20 000 файлов
  • до 50 000 записей в архиве
  • путь до 255 символов
  • глубина пути до 32 уровней

Предельный размер архива и распакованного проекта - в разделе Лимиты и квоты.

Образ

Готовый образ платформа не собирает, а запускает: сборка пропускается. Образ должен быть публичным и лежать в Docker Hub или GitHub Container Registry. Образ из другого реестра платформа отклоняет сразу, при создании или правке приложения: ошибка стоит на поле с адресом образа.

Адрес записывается как обычно:

  • nginx:1.27 - образ из Docker Hub, хост можно не указывать
  • ghcr.io/owner/app:1.0 - образ из GitHub Container Registry

Что дальше


Страница в markdown, так её читает агент: /docs/deploy/sources.md