rivet-deploy-image について
Docker と Rivet のデプロイ操作を使い、Rivet クラスターへイメージを配備する手順をエージェントに示すスキルです。Rivet CLI を使わず、ビルド、アップロード、段階的なロールアウトを行います。
主な機能
- 01Docker イメージのビルドと計測
- 02イメージビルドの登録
- 03署名付き URL によるアップロード
- 04完了までロールアウトを進行
- 05ビルド ID を使った再試行
活用シーン
- 01指定した Rivet クラスターへのイメージ配備
- 02再ビルドなしでのロールアウト再試行
- 03デプロイ先とビルド ID の報告
MCP 対応
`execute` ツールを通じて、`rivet.deploy.prepare` や `rivet.deploy.rollout` などの Rivet 操作を呼び出します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ rivet-dev/ skills --skill rivet-deploy-imageインストール後、Claude Code で/rivet-deploy-imageを入力して読み込まれたか確認します。
同梱ファイルreferences/rollout.md
詳細
イメージを Rivet クラスターにデプロイする
デプロイでは、ローカルでのビルド、1 回のアップロード、execute ツールを使った 2 回の Code Mode 操作を行います。Docker とシェルが必要です。Rivet CLI や、ほかのログイン手段は必要ありません。
開始前
- セッションでデプロイできることを確認します。
searchにrivet.deploy.prepareが表示されない場合、セッションは読み取り専用か、プロジェクトまたは名前空間に固定されているため、ここからデプロイを実行できません。再試行せず、その旨を伝えてください。 - クラスターを選びます。
executeでreturn (await rivet.cloud.v2.clusters.list()).items;を実行し、デプロイ先のクラスターのclusterフィールドを使います。これはクラスターの名前です。クラスターに固定された接続では、rivet.context()にクラスターが表示され、以下の呼び出しではclusterを省略します。
手順
-
シェルでイメージをビルドし、サイズを確認します。プラットフォームは
linux/amd64である必要があります。docker build --platform linux/amd64 -t app . docker image save app -o image.tar wc -c < image.tar # content_length openssl md5 -binary image.tar | base64 # content_md5tarball は 5 GiB 以下である必要があります。アップロードするファイルそのものの正確なサイズを確認してください。いずれかの値が異なると、ビルドの検証に失敗します。
-
ビルドを登録します。
return await rivet.deploy.prepare({ cluster: "my-cluster", image: "app:latest", content_length: 48213504, content_md5: "1B2M2Y8AsgTpgAmY7PhCfg==", });content_lengthは文字列ではなく数値です。tarball の名前がimage.tarでない場合は、fileを渡してください。返されたbuild_idを保持します。 -
返された
uploadコマンドを変更せずにシェルで実行します。これは署名付き URL に対する curl コマンドです。この URL はその tarball 専用で、expires_atまで有効なため、Rivet の認証情報は含まれていません。 -
doneがtrueになるまで繰り返しロールアウトします。return await rivet.deploy.rollout({ cluster: "my-cluster", build_id: "<build_id>" });各呼び出しは 1 ステップ進めてすぐに戻るため、
doneがfalseの間は再度呼び出してください。各ステップ、エラー、ロールバック方法についてはreferences/rollout.mdを参照してください。 -
最終結果の
build_idとendpointsをユーザーに伝えます。後でロールバックする際にbuild_idが必要です。
ルール
- ロールアウトを再試行するために、ビルドや再アップロードをしてはいけません。同じ
build_idを指定して、再度rivet.deploy.rolloutを呼び出してください。 - デプロイ全体には
rivet.deploy.*を使用してください。rivet.cloud.v2.builds.*やrivet.cloud.v2.runnerPools.upsertを直接操作してはいけません。upsert はプールの設定全体を置き換えるため、許可リストが失われます。 cluster、region、poolの名前を推測してはいけません。最初に一覧を取得してください。