Развёртывание и управление исходным кодом

Предварительные требования

Перед чтением этой страницы убедитесь, что вы запустили свой первый Portal, как описано в Быстрый старт AI Portal.

Исходный код Portal живёт в трёх местах: локальное рабочее пространство разработки, source storage и развёрнутые артефакты. nb portal синхронизирует их между собой.

Полный жизненный цикл

Повседневный цикл выглядит так:

dev (локальная разработка) → push (отправка исходного кода) → deploy (сборка и развёртывание)

Где:

  1. nb portal dev <portal> — запустить локальный сервер разработки, менять код и видеть результат
  2. nb portal push <portal> — отправить локальные изменения исходного кода в source storage
  3. nb portal deploy <portal> — собрать и развернуть, чтобы изменения увидели пользователи

Если вы подхватываете Portal, который уже создал коллега, или пересели за другую машину, сначала загрузите его локально:

nb portal list                 # Посмотреть, какие Portal существуют
nb portal pull customer        # Загрузить исходный код локально
nb portal dev customer         # Начать разработку

pull скачивает и распаковывает исходный код в рабочее пространство разработки, по умолчанию ./<portal>, либо в другое место через --path. Зависимости устанавливаются автоматически; добавьте --no-install, чтобы пропустить этот шаг в CI или установить их самостоятельно.

После успешной загрузки расположение рабочего пространства разработки записывается в конфигурацию окружения CLI, поэтому dev, push и deploy читают исходный код оттуда, и указывать путь каждый раз не нужно.

Добавление Portal

У приложения может быть несколько Portal с раздельными страницами и правами доступа, но общими данными. Скажем, одна точка входа для внутренних сотрудников и одна для внешних клиентов:

nb portal create customer

При создании в текущем каталоге на основе шаблона @nocobase/portal-template-default появляется ./customer как рабочее пространство разработки, записываются .env и .env.local, а затем устанавливаются зависимости. Чтобы положить его в другое место, используйте --path.

Имя Portal может состоять только из строчных букв, цифр, подчёркиваний и дефисов и должно начинаться со строчной буквы или цифры.

source storage

Исходный код Portal может храниться в двух местах:

РежимОписаниеКогда использовать
nocobaseПо умолчанию, исходным кодом управляет source storage на стороне NocoBaseБыстрый старт, разработка в одиночку, code review не нужен
gitИсходный код сохраняется в указанный репозиторий GitКомандная работа, code review, интеграция с CI

С nocobase по умолчанию начать быстрее всего, поскольку репозиторий заранее не нужен. Но у него нет истории версий, поэтому неудачное изменение откатывается только перезаписью всего целиком. Если этот Portal будет развиваться долго, переведите его на Git пораньше.

Переход на Git

create только создаёт рабочее пространство разработки, а настройка source storage выполняется через config. Переключиться можно в любой момент после создания:

nb portal config customer \
  --source-storage git \
  --git-repo git@github.com:nocobase/customer-portal.git

nb portal push customer --message "Move customer portal source to Git"

config синхронизирует настройку source storage с удалённой записью Portal, и последующие вызовы push пойдут через Git.

Когда в репозитории лежит один Portal, для --git-path вполне подходит корень репозитория по умолчанию. Подкаталог нужен, только если вы хотите держать несколько Portal в одном репозитории:

nb portal config customer --git-path portals/customer

Временная загрузка из другого репозитория

Чтобы опробовать исходный код из другого репозитория, не меняя настройки Portal, pull принимает разовое переопределение:

nb portal pull customer --git-repo git@github.com:nocobase/another-portal.git

Это не изменяет удалённую запись Portal, а --git-branch и --git-path можно использовать только вместе с --git-repo. Чтобы перейти на хранение в Git насовсем, используйте config, как показано выше.

config также умеет менять расположение рабочего пространства разработки — после переноса исходного кода в другой каталог сообщите CLI его новое место через --path:

nb portal config customer --path ./workspaces/customer

Различия между типами окружений

nb portal синхронизирует данные по-разному в зависимости от типа окружения:

Тип окруженияОписание
localПриложение на этой машине. pull загружает исходный код в рабочее пространство разработки, deploy собирает из рабочего пространства разработки и синхронизирует артефакты
dockerПриложение работает в Docker, доступ через volume. Поведение такое же, как выше
httpСинхронизация через API. pull / push скачивают или загружают архив исходного кода

Окружения типа ssh пока не поддерживают управление Portal.

Развёртывание в нескольких окружениях

Один и тот же Portal можно развернуть в разные окружения, указав целевое через --env:

nb portal deploy customer --env prod --yes

--yes пропускает интерактивное подтверждение. Когда явно переданный --env отличается от текущего окружения, CLI по умолчанию останавливается и спрашивает. В скриптах и CI не забывайте добавлять --yes, иначе команда зависнет на подтверждении.

О межокруженческом выпуске структуры таблиц данных и конфигурации см. Управление релизами.

Путь доступа

После развёртывания путь доступа к Portal выглядит так:

<appPublicPath>/x/<portal>/

Для Portal внутри дочернего приложения:

<appPublicPath>/x/apps/<app>/<portal>/

Префикс /x/ относится к AI Portal, а Portal без кода используют /v/.

Удаление Portal

nb portal destroy customer

Эта операция удаляет запись Portal и развёрнутые файлы, локальное рабочее пространство разработки по умолчанию сохраняется. Добавьте --delete-dev-path, если хотите удалить и его.

Связанные ссылки