用途
该技能用于把当前目录中的代码部署到 Railway。当用户提出部署相关需求时触发,例如要求 "deploy"(部署)、"ship"(发布)、"push code"(推送代码),说出 "railway up" 或 "deploy to Railway",希望部署本地代码改动,或要求 "deploy and fix any issues"(部署并修复问题,此时应使用 --ci 模式)。
主要能力
- 使用 railway up 从当前目录部署代码到 Railway。
- 支持两种模式:分离模式(默认)与 CI 模式。
- 可指定部署目标服务、环境或未链接的项目。
- 支持通过 -m 标志附带提交信息。
提交信息
应始终使用 -m 标志并提供描述性提交信息,概括本次部署的内容,例如:
railway up --detach -m "Add user authentication endpoint"
良好的提交信息示例:
- 描述改动内容:"Fix memory leak in worker process"
- 引用工单/问题:"Implement feature #123"
- 简洁但有意义:"Update deps and fix build warnings"
模式
分离模式(默认)
发起部署后立即返回,适用于大多数部署场景。
railway up --detach -m "Deploy description here"
CI 模式
流式输出构建日志直到完成。适用于用户希望观察构建过程或需要排查问题的场景。
railway up --ci -m "Deploy description here"
使用 CI 模式的时机:
- 用户说 "deploy and watch"(部署并观察)、"deploy and fix issues"(部署并修复问题)。
- 用户正在调试构建失败。
- 用户希望看到构建输出。
部署指定服务
默认部署到已链接的服务。若需部署到其他服务:
railway up --detach --service backend -m "Deploy description here"
部署到未链接的项目
无需先链接即可部署到某个项目:
railway up --project <project-id> --environment production --detach -m "Deploy description here"
需要同时提供 --project 与 --environment 两个标志。
CLI 选项
-m, --message <MSG>:描述本次部署的提交信息(应始终使用)。-d, --detach:不附加日志(默认)。-c, --ci:流式输出构建日志,完成后退出。-s, --service <NAME>:目标服务(默认使用已链接的服务)。-e, --environment <NAME>:目标环境(默认使用已链接的环境)。-p, --project <ID>:目标项目(需要同时提供 --environment)。[PATH]:要部署的路径(默认为当前目录)。
目录链接
Railway CLI 会沿目录树向上一层查找已链接的项目。若当前处于已链接项目的子目录中,无需重新链接。
对于子目录部署,建议先通过 environment 技能设置 rootDirectory,然后正常使用 railway up 部署。
部署之后
分离模式
输出 "Deploying to <service>...",随后可使用 deployment 技能查看构建状态(搭配 --lines 标志)。
CI 模式
构建日志会内联流式输出。若构建失败,错误会出现在输出中。CI 模式之后不要运行 railway logs --build,因为日志已经流式输出过。若需要更多上下文,可使用 deployment 技能搭配 --lines 标志(切勿直接流式输出)。
组合使用
- 部署后检查状态:使用 service 技能。
- 查看日志:使用 deployment 技能。
- 修复配置问题:使用 environment 技能。
- 修复配置后重新部署:使用 environment 技能。
错误处理
未链接项目
提示 "No Railway project linked. Run railway link first." 需先运行 railway link。
未链接服务
提示 "No service linked." 使用 --service 标志或运行 railway service 选择一个服务。
构建失败(CI 模式)
构建日志已经流式输出,可直接从 railway up --ci 的输出中分析。CI 模式之后不要运行 railway logs(它会无限流式输出,除非加上 --lines)。
常见问题:
- 缺少依赖:检查 package.json/requirements.txt。
- 构建命令有误:使用 environment 技能修复。
- Dockerfile 问题:检查 dockerfile 路径。