nb app upgrade

Обновление выбранного приложения NocoBase. CLI сначала останавливает текущее приложение, по умолчанию заменяет сохранённые исходники или образ, синхронизирует коммерческие плагины, выполняет обновление и запуск приложения, а в конце обновляет среду выполнения окружения. Docker-окружения во время запуска пересоздают контейнер приложения из сохранённой конфигурации окружения.

Использование

nb app upgrade [flags]

Параметры

ПараметрТипОписание
--env, -estringИмя CLI-окружения для обновления; если не указано, используется текущее окружение
--yes, -ybooleanЕсли явно переданный --env указывает на окружение, отличное от текущего, пропускает интерактивное подтверждение
--force, -fbooleanПропускает подтверждение обновления. В неинтерактивных терминалах и сессиях ИИ-агента этот флаг нужно передавать явно
--skip-download, -sbooleanПропустить загрузку исходников или образа и выполнить поток обновления и запуска на основе уже сохранённых локальных исходников или Docker-образа; также пропускает nb license plugins sync
--versionstringПереопределяет целевую версию этого обновления; после успешного выполнения новая версия будет записана в downloadVersion конфигурации окружения
--verbosebooleanПоказать вывод низкоуровневых команд обновления и перезапуска

Примеры

nb app upgrade
nb app upgrade --force
nb app upgrade --env local
nb app upgrade --env local --force
nb app upgrade --env local --skip-download
nb app upgrade --env local --skip-download --version beta
nb app upgrade --env local --version beta
nb app upgrade --env local --verbose
nb app upgrade --env local-docker --skip-download

Если вы явно передаёте --env, и оно отличается от текущего окружения, CLI сначала запросит подтверждение. В неинтерактивных терминалах или сессиях ИИ-агента добавьте --yes самостоятельно либо сначала выполните nb env use <name>, а затем повторите попытку.

Перед фактическим началом обновления интерактивный терминал также запросит дополнительное подтверждение обновления, если только вы явно не передали --force. В неинтерактивных терминалах и сессиях ИИ-агента nb app upgrade откажется продолжать без --force и выведет команду для повторного запуска, которую можно сразу скопировать. Если это ещё и операция с другим окружением, понадобятся и --yes, и --force.

По умолчанию nb app upgrade выполняет следующие шаги:

  1. nb app stop
  2. nb source download --replace
  3. nb license plugins sync --skip-if-no-license
  4. nb app start
  5. Сохранить новую downloadVersion, если нужно
  6. nb env update

Если передан --skip-download, CLI пропускает шаги 2 и 3 и сразу выполняет поток обновления и запуска на основе текущих сохранённых исходников или образа. Если также передан --version, CLI не будет загружать эту версию в рамках этого запуска, а только сохранит её как новую downloadVersion после успешного запуска, чтобы будущие обновления могли её использовать.

На шаге 4 CLI автоматически выполнит необходимую подготовку обновления для текущего состояния кода, а затем будет ждать, пока приложение не пройдёт __health_check. Во время ожидания CLI сначала выводит одну строку ожидания, а затем одну строку прогресса каждые 10 секунд, пока приложение не будет готово или пока проверка работоспособности не достигнет таймаута.

Если последний шаг nb env update завершится ошибкой, обновление всё равно считается успешным. CLI выведет предупреждение и попросит затем вручную выполнить nb env update <envName>.

Hook-скрипты

Если текущий env сохранил hook через nb init --hook-script, nb app upgrade передает hook lifecycle upgrade. Для source npm/Git обновление source запускает beforeDependencyInstall(context) перед установкой зависимостей с context.phase = 'upgrade' и context.command = 'app:upgrade'.

Затем шаг запуска upgrade приложения выполняет beforeAppInstall(context), а после старта приложения и успешного __health_check выполняет afterAppStart(context). Оба hook также используют context.phase = 'upgrade' и context.command = 'app:upgrade'. Docker source не запускает beforeDependencyInstall, но запускает hooks уровня приложения.

Связанные команды