JSON と自動化
CLI はスクリプト化できるように作られています。機械可読な出力には --json を渡し、CI からはトークンで操作し、任意のコマンドのスキーマをランタイム時に検出できます。
この出力のもう 1 つの読み手は AI コーディングエージェントです — Claude Code からのデプロイ では、エージェントがデプロイを確認するために実行する JSON ログコマンドを示しています。
どこでも --json
構造化出力のために、任意のコマンドに --json を追加します。stdout が TTY でない場合、CLI は自動的に JSON に切り替わります。
lizard ps --json
lizard secrets list --json
lizard metrics --jsonストリーミングコマンド
ストリーミングコマンドでは(--detach を付けない lizard up)、--json は 1 行につき 1 つの JSON オブジェクト を出力します:
{ "event": "log", "line": "Step 1/8 : FROM node:20" }
{ "event": "log", "line": "..." }
{ "event": "deployed", "status": "running", "url": "https://app.onlizard.com" }ビルドストリームは done または error で終了します。done の後、--ci を付けない lizard up は、status を含む最終的な deployed、failed、または deploying イベントを出力します。url(null の場合があります)を含むのは deployed だけです。error の後に最終イベントはなく、コマンドは 1 で終了します。
logs --json はストリームではなくスナップショットです
lizard logs --json は 直近 200 行 を返し(--tail N で上書き可能、最大 1000)、終了します。さらに出力があることを期待して待機しないでください。特定のインシデントについては、--restart latest または --restart <id> を使用します。
エラー
JSON モードで失敗したコマンドは、stdout にエラーオブジェクトを 1 つ出力し、0 以外のコードで終了します(「CI / ヘッドレス利用」の表を参照):
{
"error": {
"code": "ERROR",
"status": null,
"message": "Project \"my-projet\" not found.",
"body": null
}
}code は API のエラーコード、NOT_AUTHENTICATED や PROJECT_DELETED などの CLI のコード、または一般的なエラーを表す ERROR です。フラグの誤りでは commander.unknownOption のようなコードになります。status は HTTP ステータスで、API が応答する前に CLI が失敗した場合は null です。body は API のレスポンスか null です。
サインインしていない場合、コマンドは NOT_AUTHENTICATED で失敗し、2 で終了します。CI 以外では、body.login にサインインリンク(authUrl、authUrls)と instruction が入ります。エージェントはリンクをユーザーに渡し、その後コマンドを再実行できます。
スキーマ検出
任意のコマンドの正確な引数、オプション、終了コードを出力します:
lizard --help --json # whole tree + global flags + exit codes
lizard service set --help --json # one commandレスポンスの形式は { cli, version, agents, command: { arguments, options, subcommands }, globalOptions, exitCodes } です。これはインストール済みのバイナリから生成されるため、常に使用中のバージョンと一致します — フラグをハードコードするよりこちらを優先してください。
CI / ヘッドレス利用
トークンで認証し、プロジェクトを明示的にリンクします。そうしないと、ヘッドレスな up はアカウントのデフォルトプロジェクトにデプロイします:
# Set LIZARD_TOKEN through your CI secret store.
lizard init --name my-project
lizard up --ci --service api --detach # creates api on the first run終了コードを確認してパイプラインを分岐してください:
| コード | 意味 |
|---|---|
0 | 成功 |
1 | 一般的なエラー |
2 | 認証 — トークンがない / 期限切れ |
3 | 見つからない: その ID のものが API にない |
4 | タイムアウト |
5 | キャンセル済み |
どれにも一致しないプロジェクト名やサービス名は 1 で終了します。lizard run、lizard sandbox exec、lizard sandbox ssh は、実行したコマンド自身の終了コードで終了します(run がコマンドを見つけられない場合は 127)。
--wait を付けると、redeploy はビルドと新しいデプロイが ready になるまで待機します。付けない場合、JSON モードは Lizard がビルドリクエストを受け付けた時点で 0 で終了します。
if lizard redeploy --service api --wait --json; then
echo "Deploy succeeded"
else
status=$?
echo "Deploy failed with code $status" >&2
lizard logs --build --json || true
exit "$status"
fi更新日