Розгортання
Розгортання — це один запуск конвеєра: отримання коду, визначення, збірка, запуск, запис. Цей розділ показує кожен крок, що ви бачите під час його виконання і що робити, коли він зупиняється.
Два способи доставити код#
| Завантаження архіву | Git-репозиторій | |
|---|---|---|
| Консоль | Завантаження архіву — виберіть файл | Git-репозиторій — URL і необов'язковий Ref |
| Формати | .zip, .tar.gz, .tgz |
будь-який URL репозиторію, який платформа може клонувати без запиту логіна |
| Розмір | до 512 МіБ (архів і розпакований вміст) | неглибоке клонування, --depth 1 |
| Версія | саме те, що ви завантажите | ref, який ви вкажете (гілка чи тег); порожньо — гілка за замовчуванням |
| Джерело в REST | {"type":"archive","upload_id":"…"} |
{"type":"git","url":"…","ref":"main"} |
| MCP | upload_archive (малі), create_upload_url (великі) → deploy_app |
deploy_app(source_type="git", url=…, ref=…) |
Git не може запитати пароль
Клонування виконується неінтерактивно (GIT_TERMINAL_PROMPT=0). Репозиторій, якому потрібні облікові дані, має бути доступний без запиту. Якщо це не так, завантажте натомість архів із вихідним кодом.
Конвеєр#
- Отримання кодуклонувати репозиторій або розпакувати архів в окрему приватну теку збірки
- Визначенняпрочитати
platform.yaml; інакше визначити середовище виконання за вашими файлами - Генераціястворити Dockerfile для цього середовища виконання
- Збіркапередати контекст вашому демону й зібрати образ
- Запускзамінити контейнер застосунку; передати змінні середовища
- Записзберегти статус, маніфест і журнал; налаштувати маршрут домену
Розгортання — це фонові завдання. Консоль, GET /deployments/{id}/logs?stream=1 (server-sent events) і MCP-інструменти list_deployments / deploy_logs показують той самий живий журнал, доки завдання не завершиться, а потім — збережений журнал.
Що визначається#
Якщо platform.yaml немає, рішення приймає перший файл, що збігся:
| Файл у корені вихідного коду | Середовище виконання |
|---|---|
package.json |
node |
requirements.txt або pyproject.toml |
python |
composer.json або public/index.php |
php |
index.html |
static |
Нічого не збіглося? Розгортання одразу завершується збоєм і підказує, що додати. Подробиці про кожне середовище виконання — у довіднику platform.yaml.
Як читати журнал збірки#
Три рядки з # угорі слід прочитати першими:
# runtime=node version=24 (platform default) port=auto— середовище виконання, версія й звідки взято версію (platform.yaml, файл-підказка на кшталт.nvmrcабо типове значення платформи);# note: …— з'являється, коли підказку на кшталтengines.node: ">=18"знайдено, але проігноровано, бо це діапазон;# base image: node:24-alpine (sha256:…)— точний образ, з якого почалася збірка.
Статуси#
| Статус | Значення |
|---|---|
| у черзі | прийнято, чекає своєї черги |
| отримання коду | клонування або розпакування вихідного коду |
| збірка | збірка образу у вашому демоні (найдовший крок) |
| працює | новий контейнер запущено; ця версія активна |
| збій | зупинено з помилкою — вона показана над журналом |
Коли розгортання завершується збоєм#
Старий застосунок замінюється лише після того, як новий образ зібрано, тож збій отримання коду, визначення чи збірки залишає працювати попередню версію. Відкрийте Журнал збірки — помилка знаходиться угорі діалогу та в кінці журналу.
| Повідомлення (скорочено) | Причина | Що робити |
|---|---|---|
cannot autodetect runtime… |
у корені вихідного коду немає жодного з файлів для визначення | додайте platform.yaml з runtime: або виправте структуру архіву (запакуйте вміст теки, а не батьківську теку) |
platform.yaml is invalid … unknown key |
помилка в написанні — невідомі ключі відхиляються навмисно | виправте ключ, названий у повідомленні |
python runtime: set 'start_cmd'… |
немає main.py / app/main.py |
задайте start_cmd |
node runtime: no start command |
немає скрипта start і немає server.js / index.js |
додайте скрипт start або start_cmd |
cannot pull base image … is that version published? |
version: вказує на випуск, якого не існує |
використайте наявну основну чи мінорну версію, див. версії |
archive too large (> 512 MiB) |
розмір завантаженого або розпакованого архіву перевищує ліміт | приберіть node_modules, результати збірки та медіафайли |
interrupted by management restart |
платформу оновили або перезапустили посеред збірки | просто розгорніть знову |
Повторне розгортання та повернення назад#
- Розгорніть знову з тим самим або новим джерелом — кожен запуск стає новим пронумерованим розгортанням і образом (
platform/<slug>:<version>-<sha8>). - Повернення назад означає повторне розгортання старішого джерела: старішого git-ref (позначайте теги!) або старішого архіву. Кнопки відкату одним кліком немає.
- Розгортання замінює контейнер, тож очікуйте короткого переривання, поки запускається новий. Дані в оголошених томах і в базах даних не зачіпаються.
Закріплюйте те, що випускаєте
Розгортайте з git-тега й закріплюйте version: повним x.y.z для збірок, що мають бути відтворюваними. Коротка версія відповідає найновішому відповідному випуску й оновлюється під час кожного розгортання.
Великі архіви (від 100 МБ)#
upload_archive передає файл усередині одного MCP-запиту й обмежений приблизно 3 МіБ. Для більшого агент просить одноразове посилання для завантаження, виконує PUT файлу на нього з оболонки, а потім розгортає отриманий upload_id. Механіку й ліміти описано в розділі API-токени, REST і MCP.

