mcpField
R
rivet-deploy-image

rivet-deploy-image

github.com/rivet-devクラウド・DevOps4444 回インストール1 日前に更新
リポジトリ

rivet-deploy-image について

Docker と Rivet のデプロイ操作を使い、Rivet クラスターへイメージを配備する手順をエージェントに示すスキルです。Rivet CLI を使わず、ビルド、アップロード、段階的なロールアウトを行います。

主な機能

  1. 01Docker イメージのビルドと計測
  2. 02イメージビルドの登録
  3. 03署名付き URL によるアップロード
  4. 04完了までロールアウトを進行
  5. 05ビルド ID を使った再試行

活用シーン

  1. 01指定した Rivet クラスターへのイメージ配備
  2. 02再ビルドなしでのロールアウト再試行
  3. 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 や、ほかのログイン手段は必要ありません。

開始前

  1. セッションでデプロイできることを確認します。search に rivet.deploy.prepare が表示されない場合、セッションは読み取り専用か、プロジェクトまたは名前空間に固定されているため、ここからデプロイを実行できません。再試行せず、その旨を伝えてください。
  2. クラスターを選びます。execute で return (await rivet.cloud.v2.clusters.list()).items; を実行し、デプロイ先のクラスターの cluster フィールドを使います。これはクラスターの名前です。クラスターに固定された接続では、rivet.context() にクラスターが表示され、以下の呼び出しでは cluster を省略します。

手順

  1. シェルでイメージをビルドし、サイズを確認します。プラットフォームは 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_md5
    

    tarball は 5 GiB 以下である必要があります。アップロードするファイルそのものの正確なサイズを確認してください。いずれかの値が異なると、ビルドの検証に失敗します。

  2. ビルドを登録します。

    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 を保持します。

  3. 返された upload コマンドを変更せずにシェルで実行します。これは署名付き URL に対する curl コマンドです。この URL はその tarball 専用で、expires_at まで有効なため、Rivet の認証情報は含まれていません。

  4. done が true になるまで繰り返しロールアウトします。

    return await rivet.deploy.rollout({ cluster: "my-cluster", build_id: "<build_id>" });
    

    各呼び出しは 1 ステップ進めてすぐに戻るため、done が false の間は再度呼び出してください。各ステップ、エラー、ロールバック方法については references/rollout.md を参照してください。

  5. 最終結果の 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 の名前を推測してはいけません。最初に一覧を取得してください。

コメント