工作原理
三业务模式,一套传送带
从全新部署到接管已有应用,从一次性上线到周更迭代,每一种情况都有专门设计的流程。
Bootstrap
全新部署服务器是空的,从零拉起。11 步:风险确认与授权 → SSH 连通 → 系统探测 → 装运行时 → 上传代码 → build → pre_deploy → 写 .env + 进程单元 → Nginx + SSL → 启动 → 健康检查。
- 按风险等级如实告知 + 知情授权(提醒不卡脖子)
- DryRun 演练:11 步全跑,不动服务器
- 成功 → Project.first_deployed_at 落库,自动进入 Update 模式
Update
版本迭代代码已经在线上,推新版本。7 步:扫变化 → 风险分级 → 知情授权 → 备份点(目录硬链接) → 上传 + 平滑重启 → 健康检查轮询 → 完成。失败自动回滚。
- 绿 / 黄 / 红 三级风险评估,先把后果讲清再让你授权
- 红色风险:醒目提示不可逆后果,知情确认后继续
- 自动回滚:健康检查任一不达 → 切回备份点 → 复检
Adopt
接管已有应用你的应用已经手工跑起来了,把它纳入管理。6 步:只读探测 → 用户问答 M1-M9 → 警告分级 → 接管授权 → 不破坏式镜像配置 + tar.gz 接管前快照 → 写 ADOPTED 标记。
- 绝不重启 / 不改任何已有文件 / 不装新软件
- 接管前快照备份:整个应用目录 + 数据库 dump
- 首次 Update 加强:健康窗 ×2(≥ 60s),失败回滚到接管前快照
风险分级
9 个信号自动告诉你「这次有多危险」
扫描器对比新旧描述符,触发对应信号 → 映射 Green / Yellow / Red 风险等级 → 据此向你如实告知风险。
runtime_changedNode.js / Python / Go 等运行时大类变化
runtime_version_jump运行时主版本号跨越(node 18 → 20)
start_command_changed启动命令变化(pm2 → systemd 等)
port_changed服务监听端口变化
new_required_env新增的必填环境变量(缺值会启动失败)
pre_deploy_added新增的 pre_deploy 钩子
pre_deploy_has_unreversible包含数据库 schema 变更等不可逆操作
breaks_apiAPI 破坏式变更(删字段 / 改返回类型;由发起者声明)
major_dep_bump关键依赖主版本升级(react 17 → 18 等)
Green · 低风险
单条信号 ≤ 1,直接知悉授权即可
Yellow · 中风险
≥ 2 条信号,如实告知后果 + 延长健康检查窗
Red · 高风险
≥ 5 条信号 / 含不可逆操作,醒目提示不可逆后果,知情后授权
装备库
五类档案,第二次起 0 输入
凡是需要重复填的东西,我们都做成档案。第二个项目部署时,从下拉选,不重复填。
服务器
host + ssh_port + user + ssh_key_vault_ref(私钥本机 Vault,服务端零知识)
ICP 备案
subject + filing_number + related_domains + 状态机(draft → in_progress → active)
域名
domain + registrar + 关联 ICP filing + SSL 续签方(letsencrypt / certbot / cdn)
第三方账号
微信支付 / 阿里云 / 七牛 / DeepSeek 等 9 类,凭据全部走 Vault 引用
项目
Bootstrap 后的所有部署历史 + 描述符 + 关联装备(server / domain / ICP)
安全
不接触你不需要给我们的东西
SSH 私钥可以完全不离开你的电脑。所有敏感操作 3 年留证。失败自动回滚不打扰你。
桌面客户端 + 本地 Vault
SSH 私钥可选择存进系统 Keychain(macOS Keychain / Win DPAPI / Linux Secret Service),服务端零知识。桌面客户端跑 11 步,SSH 全部走你自己机器。
授权与免责留痕
每次部署的风险快照 + 知情授权 + IP + UA + 时间戳留痕。任何动作可追溯,便于审计与免责。
备份点 = 目录硬链接
cp -al 硬链接快照,几乎不占空间。健康检查失败 → ln -snf 切回上一版本秒级恢复。
Vault 全程审计
凭据写入 / 读取 / 轮换 / 删除全部进 vault_access_log,带 IP + 业务上下文,3 年留存。
读完了?该亲手跑一遍
Free 层免费开始,无须信用卡。