mcpField
R
rivet-deploy-image

rivet-deploy-image

github.com/rivet-dev云与 DevOps4444 次安装1 天前更新
代码仓库

关于 rivet-deploy-image

指导 Agent 使用 Docker 和 Rivet 部署操作,将镜像部署到 Rivet 集群,涵盖构建、上传与逐步发布,无需 Rivet CLI。

主要功能

  1. 01构建并测量 Docker 镜像
  2. 02登记镜像构建
  3. 03通过预签名 URL 上传
  4. 04逐步推进发布直至完成
  5. 05使用构建 ID 重试发布

适用场景

  1. 01将镜像部署到指定 Rivet 集群
  2. 02无需重建即可重试发布
  3. 03报告部署端点和构建 ID

MCP 相关

该技能通过 `execute` 工具调用 Rivet 操作,例如 `rivet.deploy.prepare` 和 `rivet.deploy.rollout`。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rivet-dev/skills --skill rivet-deploy-image

安装后在 Claude Code 中输入/rivet-deploy-image确认已加载。

附带文件references/rollout.md

详细介绍

向 Rivet 集群部署映像

部署包括本地构建、一次上传,以及通过 execute 工具运行两次 Code Mode 操作。需要 Docker 和 shell,不需要 Rivet CLI 或任何其他登录方式。

开始之前

  1. 确认当前会话可以部署。如果 search 没有列出 rivet.deploy.prepare,说明当前会话是只读的,或已固定到某个项目或命名空间,因此无法从这里执行部署。请说明这一点,不要重试。
  2. 选择集群。在 execute 中运行 return (await rivet.cloud.v2.clusters.list()).items;,然后使用要部署到的集群的 cluster 字段,该字段就是集群名称。如果连接已固定到某个集群,rivet.context() 会报告该集群,且以下所有调用都不需要提供 cluster。

步骤

  1. 在 shell 中构建映像并测量大小。平台必须是 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. 在 shell 中原样运行返回的 upload 命令。这是一条针对预签名 URL 的 curl 命令,该 URL 仅对这个 tarball 有效,直到 expires_at 到期,因此不携带 Rivet 凭据。

  4. 执行部署,并重复调用,直到 done 为 true。

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

    每次调用都会推进一个步骤并立即返回,因此当 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 名称。请先列出它们。

评论

支持 Markdown