nb app upgrade

指定した NocoBase アプリケーションをアップグレードします。CLI はまず現在のアプリケーションを停止し、デフォルトで保存済みのソースコードまたはイメージを置き換え、商用プラグインを同期し、アップグレード処理を実行してアプリケーションを起動したあと、最後に env runtime を更新します。Docker env では起動時に保存済みの env 設定からアプリケーションコンテナを再作成します。

使い方

nb app upgrade [flags]

パラメータ

パラメータ説明
--env, -estringアップグレードする CLI env 名。省略時は現在の env を使用します
--yes, -yboolean明示的に指定した --env が現在の env と異なる場合、対話確認をスキップします
--force, -fbooleanアップグレード確認をスキップします。非対話端末と AI エージェントのセッションでは明示的に必要です
--skip-download, -sbooleanソースコードまたはイメージのダウンロードをスキップし、現在保存されているローカルソースコードまたは Docker イメージを使ってアップグレードと起動のフローを実行します。nb license plugins sync もスキップします
--versionstring今回のアップグレード対象バージョンを上書きします。成功すると新しいバージョンは env 設定の 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 を明示的に指定し、その値が現在の env と異なる場合、CLI は最初に確認を求めます。非対話端末や AI エージェントのセッションでは、自分で --yes を追加するか、先に nb env use <name> を実行してから再試行してください。

実際のアップグレード開始前には、--force を渡さない限り、対話端末で追加のアップグレード確認も表示されます。非対話端末と AI エージェントのセッションでは、--force がないと nb app upgrade は実行を拒否し、再実行用のコマンドを表示します。さらに cross-env 操作でもある場合は、--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 も指定した場合、そのバージョンはこの実行中にはダウンロードされず、起動成功後に新しい downloadVersion として保存されるだけなので、以後のアップグレードで利用できます。

手順 4 では、現在のコード状態に応じて必要なアップグレード準備を自動で完了してから、アプリケーションが __health_check を通過するのを待ちます。待機中、CLI は最初に待機メッセージを 1 行出力し、その後は 10 秒ごとに進捗メッセージを 1 行ずつ出力して、アプリケーションの準備完了またはタイムアウトまで待機します。

最後の nb env update が失敗しても、アップグレード自体は成功とみなされます。CLI は warning を表示し、あとで nb env update <envName> を手動で実行するよう案内します。

hook スクリプト

現在の env が nb init --hook-script で hook を保存している場合、nb app upgrade は upgrade ライフサイクルを hook に渡します。npm/Git source では、source 更新時の依存関係インストール前に beforeDependencyInstall(context) が実行され、context.phase = 'upgrade'context.command = 'app:upgrade' になります。

その後、アプリ upgrade の起動ステップで beforeAppInstall(context) が実行され、アプリが起動して __health_check に通った後で afterAppStart(context) が実行されます。これら 2 つの hook も context.phase = 'upgrade'context.command = 'app:upgrade' を使用します。Docker source では beforeDependencyInstall は実行されませんが、アプリレベルの hook は実行されます。

関連コマンド