CLI
zenavo を使うと、ターミナルや CI からプロジェクトをデプロイ・運用できます。API キーで REST API と通信し、コマンドの構成は Zeabur の CLI(auth、workspace、context、project、service、deployment)にならっているので、乗り換えも簡単です。
インストール
Go 1.26 以降で、zenavo-cli リポジトリからビルドします。
make build # このマシン用の ./zenavo
make dist # macOS、Linux、Windows 用の dist/zenavo_<os>_<arch> と SHA256SUMSサインイン
zenavo auth login # コードを表示し、<console>/device を開きます
zenavo auth login --scope deploy # デプロイはできるが何でもはできないキーを求めます
zenavo auth login --with-token < key.txt # 既存の API キーを stdin から読みます
zenavo auth status # 誰としてサインインしているか、キーに何ができるかauth login はコードを表示し、コンソールの /device ページを開きます。サインインしてコードを入力し、承認してください。承認する前に、ページに表示されるデバイス名とネットワークを確認してください。SSH 越しなら、表示されたアドレスを任意のデバイスで開きます。CLI は「CLI on <computer>」という名前の、90 日間有効な専用の API キーを受け取ります。承認ページでは、その権限を下げたり、一部のプロジェクトに制限したりできます。
--scope で CLI が求める権限を選びます:read(Read only)、deploy(Deploy)、full(Full access、デフォルト)。特に共有のマシンでは、必要最小限を求めてください。承認する人はさらに下げたり一部のプロジェクトに制限したりできますが、上げることはできません。CLI は承認された内容を保存し、zenavo auth status がそれを表示します。
https://zenavo.app as dev@example.com (saved key)
Access: deploy (deploy and configure existing projects), limited to 1 project(s): proj_…コマンドがキーにできる以上のことを必要とすると、API は 403 を返し、CLI がどうすればよいかを伝えます:より広いスコープでサインインし直す(zenavo auth login --scope full)、すべてのプロジェクトについてキーを承認する、またはどの API キーにもできないこと(請求、メンバー、アカウント)ならコンソールを使う、のいずれかです。--with-token ではキーの権限は作成時に選ばれているので、auth status には表示できず、--scope も使えません。
キーは ~/.config/zenavo/config.json(または $ZENAVO_CONFIG)にモード 0600 で保存され、作成したコンソールにだけ送られます。auth logout はローカルで忘れるだけです。無効にするには API Keys で削除してください。
CI とスクリプト
サインインの代わりに ZENAVO_TOKEN に API キーを設定し(https://zenavo.app 以外なら ZENAVO_API_URL も)、どのコマンドも入力を求めないよう -i=false を付けます。--json は jq 向けに stdout へ JSON を出力し、進捗は stderr に出ます。追跡しているジョブが失敗すると終了ステータス 1 で終わります。
export ZENAVO_TOKEN=zv_pat_…
zenavo deploy web -p blog -i=falseコンテキスト
zenavo team switch と zenavo context set project|service は、以降のコマンドが使うチーム、プロジェクト、サービスを保存します。--team(または --workspace)、--project/-p、--service/-s で、1 つのコマンドだけ上書きできます。保存も指定もなければ、CLI は 1 つしかないものを使い、尋ねられるときは尋ね、それ以外は何を指定すべきかを伝えます。
クイックツアー
zenavo team ls # チームの一覧。* が現在のチーム
zenavo team switch acme
zenavo project create blog --git https://github.com/acme/blog
zenavo env set PORT=3000 DATABASE_PASSWORD # KEY だけなら値を表示せずに尋ねます
zenavo deploy # すべてのサービス。ビルドログを追跡します
zenavo deploy web # 1 つのサービス。他はデプロイ済みのまま
zenavo service ls # 状態、準備状況、再起動回数、CPU、メモリ
zenavo logs web -f # ライブの実行時ログ
zenavo logs --build # 最新のビルドとデプロイのログ
zenavo domain add blog # blog.zenavo.app、または自分の完全なドメイン
zenavo rollback # 以前の成功したデプロイを選ぶ
zenavo template deploy -f zeabur.yaml --var DOMAIN=blogコマンド
| コマンド | 内容 |
|---|---|
auth login | logout | status | ブラウザーか API キーでサインイン、キーを忘れる、自分が誰かを表示 |
team ls | current | switch | clear | チーム(別名 workspace)。切り替えると保存したプロジェクトとサービスは消えます |
context show | set project | set service | clear | 以降のコマンドが使うデフォルト |
server ls | get | チームのサーバー。サーバーの追加はコンソールで |
project ls | get | create | delete | プロジェクト。create --git <url> か --image <image> で最初のサービスを追加。delete は名前の入力を求めます |
service ls | deploy | restart | suspend | resume | exec | サービス。exec -- <command> はコンテナ内で sh -c により最長 60 秒実行します |
deploy [service] [--dir <path>] | プロジェクトか 1 つのサービスをデプロイしてビルドを追跡。--dir はローカルディレクトリをサービスのソースとしてアップロードし、必要ならサービスを作成します。--detach はすぐに戻ります |
logs [service] [-f] [--build] | 実行時ログの最後の 200 行。-f でストリーム、--build で最新のビルドログ |
shell [service] | サービスのコンテナで対話型のターミナル(bash か sh)。シェルの終了ステータスで終わります |
job ls | get | log | wait | ジョブ:デプロイ、再起動、バックアップ(別名 deployment) |
rollback [job-id] | プロジェクトを以前の成功したデプロイに戻す |
env ls | set | unset | サービスの変数。--reveal を付けない限り値は隠れます。set --file .env、--deploy で保存後にデプロイ |
domain ls | add | rm | ドットのない名前(blog)は生成ドメイン、完全な名前は自分のドメイン |
template deploy -f <file> | Zeabur テンプレート(YAML)か Zenavo のエクスポート(JSON)からプロジェクトを作成。--var KEY=value、--deploy |
backup ls | create | バックアップ。create --engine postgres|mysql|volume:<id>。ダウンロードと復元はコンソールで |
version | CLI のバージョン |
すべてのコマンドに --help があります。グローバルフラグ:--team(--workspace)、--project/-p、--service/-s、--json、--yes/-y、-i=false、--api。
まだ CLI にないもの
サーバーの追加とセットアップ、チームの管理、GitHub App、バックアップのダウンロードと復元はコンソールで行います。