SuperAPI AI 工具集

new

部署与运维

查看项目

更新于 10-15 15:33

技能介绍

用途

该技能用于在 Railway 平台上创建新的项目(Project)、服务(Service)和数据库(Database),并完成相应配置。当用户表达「setup」「deploy to railway」「initialize」「create project」「create service」,或希望从 GitHub 仓库部署时,应使用此技能。

主要能力

  • 检查 Railway CLI 是否安装及是否已认证。
  • 判断当前目录、父目录是否已关联 Railway 项目,决定新增服务还是初始化/关联项目。
  • 初始化新项目(railway init)或关联已有项目(railway link)。
  • 在已关联项目中创建服务(railway add --service <name>)。
  • 根据项目类型(静态站点、Node.js SSR、Python、Go 等)进行配置,引用 railpack.md 与 monorepo.md。
  • 处理隔离式 monorepo(设置根目录)与共享式 monorepo(使用自定义 build/start 命令,不设根目录)。
  • 通过 database 技能添加 Postgres、Redis、MySQL、MongoDB 等数据库并连接服务。
  • 提供脚手架提示,以及在无代码时建议最小化模板。
  • 包含错误处理与多组操作示例。

使用方式

前提条件:检查 CLI 是否安装(command -v railway),未安装则使用 npm install -g @railway/cli 或 brew install railway;检查认证(railway whoami --json),未认证则运行 railway login。

决策流程:先运行 railway status --json。若已关联,默认「deploy to railway」表示向已关联项目添加服务,不要创建新项目,除非用户明确说「new project」「create a project」「init a project」等。若未关联,检查父目录(cd .. && railway status --json);父目录已关联时,创建服务(railway add --service <name>),通过 environment 技能设置 rootDirectory 为子目录路径,再从根目录部署(railway up)。若父目录也未关联,则按 init 或 link 流程处理。

Init 与 Link 决策:用户明确说「new project」则用 railway init;用户指定已有项目名则用 railway link;目录名与已有项目匹配则询问;无匹配项目则 railway init;不明确时询问用户。创建新项目使用 railway init -n <name>,存在多个工作区时需 --workspace。关联已有项目使用 railway link -p <project>。

创建服务:项目关联后执行 railway add --service <name>。对于 GitHub 仓库来源,先创建空服务,再用 environment 技能通过 staged changes API 配置 source.repo 和 source.branch,不要使用 railway add --repo。

按项目类型配置:静态站点由 Railpack 自动检测常见输出目录(dist、build),非标准输出目录需设置 RAILPACK_STATIC_FILE_ROOT,且不要使用 railway variables CLI;Node.js SSR 检查 package.json 中的 start 脚本;Python 检查 requirements.txt 或 pyproject.toml;Go 检查 go.mod。

Monorepo 配置:隔离式 monorepo 设置 Root Directory 为应用子目录(如 /frontend);共享式 monorepo 不设根目录,改用自定义构建/启动命令(如 pnpm --filter、npm --workspace、yarn workspace、turbo run --filter),并设置 watch paths。

数据库:添加 Postgres、Redis、MySQL、MongoDB 等使用 database 技能,负责创建数据库服务、连接变量引用和服务接线。

可组合性:服务创建后用 deploy 技能推送代码;高级配置用 environment 技能;域名用 domain 技能;状态检查用 status 技能;服务操作(重命名、删除、状态)用 service 技能。

适用场景

  • 用户希望初始化新的 Railway 项目或从 GitHub 部署。
  • 创建静态站点、Vite React、Astro、Next.js、Nuxt、Express、FastAPI、Django、Flask、Go 等服务。
  • 处理隔离式或共享式 monorepo 中的服务创建与配置。
  • 在已关联项目的子目录中创建并部署服务。
  • 添加并连接数据库。

限制

  • 未安装 CLI 或未认证时需先完成安装与登录。
  • 多工作区时 railway init 需要 --workspace 标志。
  • GitHub 仓库来源不使用 railway add --repo,因该方式依赖 GitHub app 集成且常常失败。
  • 不明确时应询问用户,避免错误创建项目或服务。

错误处理(要点)

CLI 未安装、未认证、无工作区、项目名已存在、服务名已存在等情况均提供对应提示与解决方式。