名称: render
描述: 在 Render 上部署和操作应用(Blueprint + 一键仪表盘深度链接,流程与 Codex render-deploy 相同)。当用户想要部署、托管或发布应用;创建或编辑 render.yaml;添加 Web、静态、Worker、Cron、Postgres 或 Key Value 服务;获取 Blueprint 深度链接进行部署;当设置了 RENDER_API_KEY 时通过 API 触发或验证部署;通过 mcporter 连接 Render MCP 以直接创建服务;或配置环境变量、健康检查、扩缩容、预览环境和项目时使用。
元数据:
{ "openclaw": { "emoji": "☁️", "homepage": "https://render.com/docs", "version": "1.0.0" } }
使用 Blueprint (render.yaml)、仪表盘或 API 在 Render 上部署和管理应用。此技能镜像 Codex render-deploy 流程:分析代码库 → 生成/验证 Blueprint → 提交并推送 → 一键仪表盘深度链接 → 可选通过 API/mcporter 验证或重新部署。
当用户想要执行以下操作时激活:
- 在 Render 上部署、托管或发布应用
- 创建或编辑 render.yaml Blueprint(新仓库或现有仓库)
- 添加 Web、静态站点、私有、Worker 或 Cron 服务;Postgres;或 Key Value
- 配置环境变量、健康检查、扩缩容、磁盘或区域
- 设置预览环境或项目
- 验证 Blueprint 或获取仪表盘/API 链接
RENDER_API_KEY → 优先使用 REST API 或 MCP(最快;无需用户点击)。使用 references/rest-api-deployment.md 获取请求体,或如果已配置则使用 mcporter(参见 references/mcp-integration.md)。检查 API 密钥:
[ -n "$RENDER_API_KEY" ] && echo "RENDER_API_KEY 已设置" || echo "RENDER_API_KEY 未设置"
在深入分析之前,使用此简短流程以减少摩擦:
1. 询问用户是否希望从 Git 仓库 部署(Blueprint 和深度链接必需)或仅获取指导。如果没有 Git 远程仓库,他们必须先创建/推送一个。
2. 询问应用是否需要数据库、Worker、Cron 或其他服务,以便选择正确的 Blueprint 结构。
然后按照下面的 部署到 Render 步骤进行(Blueprint → 推送 → 深度链接 → 验证)。
git remote -v;如果没有,请用户先在 GitHub/GitLab/Bitbucket 上创建仓库,添加 origin 并推送。render blueprints validate render.yaml。安装:brew install render 或 Render CLI。RENDER_API_KEY。sync: false;用户在仪表盘中填写它们。render blueprints validate render.yaml 或使用 Validate Blueprint API,确保无效的 YAML 不会被推送。references/codebase-analysis.md(检测运行时、构建/启动命令、环境变量)references/blueprint-spec.md(根键、服务类型、环境变量、验证)references/rest-api-deployment.md(直接通过 API 创建服务:ownerId、请求体、类型映射)references/mcp-integration.md(Render MCP 工具、mcporter 用法、支持的运行时/方案/区域)references/post-deploy-checks.md(通过 API 验证部署状态和健康情况)references/troubleshooting-basics.md(构建/启动/运行时故障)assets/(示例 Blueprint:node-express.yaml、python-web.yaml、static-site.yaml、web-with-postgres.yaml)render.yaml 位于 Git 仓库的 根目录(必需)。services、databases、envVarGroups、projects、ungrouped、previews.generation、previews.expireAfterDays。验证: render blueprints validate render.yaml(Render CLI v2.7.0+),或 Validate Blueprint API 端点。
| 类型 | 用途 |
|---|---|
web |
公共 HTTP 应用或静态站点(静态站点使用 runtime: static) |
pserv |
私有服务(仅内部主机名,无公共 URL) |
worker |
后台 Worker(持续运行,例如作业队列) |
cron |
计划任务(cron 表达式;运行后退出) |
keyvalue |
Render Key Value 实例(兼容 Redis/Valkey;在 services 中定义) |
注意: 私有服务使用 pserv,而非 private。Key Value 是 type: keyvalue 的服务;在新的 Blueprint 中不要为其使用单独的根键(一些旧的 Blueprint 使用 keyValueStores 和 fromKeyValueStore——建议使用官方格式)。
使用 runtime(首选;env 已弃用):node、python、elixir、go、ruby、rust、docker、image、static。对于静态站点:type: web、runtime: static,并且必需指定 staticPublishPath(例如 ./build 或 ./dist)。
services:
- type: web
name: my-app
runtime: node
buildCommand: npm install
startCommand: npm start
envVars:
- key: NODE_ENV
value: production
Python 示例:runtime: python、buildCommand: pip install -r requirements.txt、startCommand: uvicorn app.main:app --host 0.0.0.0 --port $PORT(或 gunicorn)。需要时在 envVars 中设置 PYTHON_VERSION / NODE_VERSION。
- type: web
name: my-blog
runtime: static
buildCommand: yarn build
staticPublishPath: ./build
可选:headers、routes(重定向/重写)。参见 静态站点。
key + value(切勿硬编码密钥)。fromDatabase.name + fromDatabase.property(例如 connectionString)。fromService.type + fromService.name + fromService.property(例如 connectionString、host、port、hostport)或 fromService.envVarKey 用于引用其他服务的环境变量。sync: false(首次创建时在仪表盘中提示用户;之后手动添加新密钥)。不能在环境变量组内使用。generateValue: true(base64 256 位值)。fromGroup: <envVarGroups[].name> 以附加环境变量组。环境变量组 不能 引用其他服务(组内不能使用 fromDatabase/fromService),并且 不能 使用 sync: false。将密钥和 DB/KV 引用放在 服务级别 的 envVars 中,或引用一个组并在旁边添加服务特定的变量。
databases:
- name: my-db
plan: basic-256mb
databaseName: my_app
user: my_user
region: oregon
postgresMajorVersion: "18"
方案(当前): free、basic-256mb、basic-1gb、basic-4gb、pro-*、accelerated-*。旧版:starter、standard、pro、pro plus(不再为新数据库提供旧版方案)。可选:diskSizeGB、ipAllowList、readReplicas、highAvailability.enabled。在服务中引用:fromDatabase.name、property: connectionString。
Key Value 实例是 type: keyvalue(或已弃用的 redis)的 服务。ipAllowList 是必需的: 使用 [] 表示仅内部访问,或 - source: 0.0.0.0/0 允许外部访问。
services:
- type: keyvalue
name: my-cache
ipAllowList:
- source: 0.0.0.0/0
description: everywhere
plan: free
maxmemoryPolicy: allkeys-lru
在其他服务中引用:fromService.type: keyvalue、fromService.name: my-cache、property: connectionString。策略:allkeys-lru(缓存)、noeviction(作业队列)等。参见 Key Value。
注意: 一些仓库使用根级的 keyValueStores 和 fromKeyValueStore;官方规范使用 services + fromService。对于新的 Blueprint,建议使用官方格式。
- type: cron
name: my-cron
runtime: python
schedule: "0 * * * *"
buildCommand: "true"
startCommand: python scripts/daily.py
envVars: []
schedule 是 cron 表达式(分钟 小时 日 月 星期)。buildCommand 是必需的(如果没有构建步骤,使用 "true")。免费方案不适用于 cron/worker/pserv。
在服务间共享变量。组内不能使用 fromDatabase/fromService/sync: false——只能使用字面量值或 generateValue: true。
envVarGroups:
- name: app-env
envVars:
- key: CONCURRENCY
value: "2"
- key: APP_SECRET
generateValue: true
services:
- type: web
name: api
envVars:
- fromGroup: app-env
- key: DATABASE_URL
fromDatabase:
name: my-db
property: connectionString
healthCheckPath: /health 用于零停机部署。region: oregon(默认)、ohio、virginia、frankfurt、singapore(创建时设置;之后无法更改)。preDeployCommand 在构建之后、启动之前运行(例如数据库迁移)。numInstances: 2。scaling.minInstances、scaling.maxInstances、scaling.targetCPUPercent 或 scaling.targetMemoryPercent。不适用于持久化磁盘。disk.name、disk.mountPath、disk.sizeGB(web、pserv、worker)。rootDir、buildFilter.paths / buildFilter.ignoredPaths、dockerfilePath / dockerContext。runtime: docker(从 Dockerfile 构建)或 runtime: image(从注册表拉取)。需要时使用 dockerCommand 代替 startCommand。previews.generation: off | manual | automatic,可选 previews.expireAfterDays。每个服务可覆盖 previews.generation、previews.numInstances、previews.plan。projects 包含 environments(每个环境列出 services、databases、envVarGroups)。用于暂存/生产环境。可选 ungrouped 用于不属于任何环境的资源。Web 服务使用 fromDatabase 引用 Postgres,fromService 引用 Key Value。添加一个 databases 条目和一个 type: keyvalue 服务;从 Web 服务的 envVars 中引用两者。参见 assets/web-with-postgres.yaml 了解 Postgres;添加一个 keyvalue 服务和 fromService 用于 Redis URL。
一个 Blueprint 中包含多个服务:type: web 用于 API,type: worker 用于后台处理器,type: cron 用于计划任务。共享 envVarGroups 或重复环境变量;使用 fromDatabase/fromService 共享 DB/Redis。所有服务使用相同的 branch 和适当的 buildCommand/startCommand(根据运行时)。
设置根级 previews.generation: automatic(或 manual)。可选 previews.expireAfterDays: 7。每个 PR 都会获得一个预览 URL;需要时可通过每个服务的 previews.generation、previews.numInstances 或 previews.plan 进行覆盖。
plan: free | starter | standard | pro | pro plus(对于 web/pserv/worker 还有:pro max、pro ultra)。省略以保持现有方案或默认为新服务使用 starter。免费方案不适用于 pserv、worker、cron。
render.yaml。要从代理使用 Render API(验证部署、触发部署、列出服务/日志):
RENDER_API_KEY(例如 skills.entries.render.env 或进程环境变量)。Authorization: Bearer $RENDER_API_KEY。目标:通过生成 Blueprint 来部署应用,然后 通过仪表盘深度链接一键部署;如果用户设置了 RENDER_API_KEY,则可选通过 API 触发或验证。
references/codebase-analysis.md 确定运行时、构建/启动命令、环境变量和数据存储。render.yaml(参见上面的 Blueprint 章节和 references/blueprint-spec.md)。对密钥使用 sync: false。参见 assets/ 中的示例。render blueprints validate render.yaml(安装:brew install render 或 Render CLI 安装)。Render 从 Git 远程仓库 读取 Blueprint。文件必须已提交并推送。
git add render.yaml
git commit -m "添加 Render 部署配置"
git push origin main
如果没有 Git 远程仓库,请停止并让用户在 GitHub/GitLab/Bitbucket 上创建仓库,将其添加为 origin 并推送。没有推送的仓库,仪表盘深度链接将无法工作。
获取仓库 URL 并构建 Blueprint 深度链接:
git remote get-url origin
如果 URL 是 SSH,