一个 DeFi 团队如何通过流程优化,把发布时间从半天压缩到一杯咖啡的时间
那个让我崩溃的周五下午
故事要从三个月前说起。
那是一个周五下午,我们要发布质押系统的第一个版本。作为团队里唯一懂部署的人,我信心满满地开始了发布流程。
14:00 - 开始部署合约到 Polygon 测试网 14:30 - 合约部署成功,开始更新前端配置 14:45 - 发现配置文件格式写错了,重新修改 15:00 - 前端打包完成,开始部署 15:20 - 部署成功,但发现合约地址配错了 15:40 - 重新打包,重新部署 16:00 - 终于可以测试了,发现一个 bug 16:30 - 修复 bug,重新走一遍流程...
到晚上 8 点,我们才完成发布。整整 6 个小时。
更糟糕的是,第二天发现生产环境的合约地址和测试环境混淆了,又花了 2 小时修复。
那一刻我意识到:这样下去不行。
问题出在哪里
我们复盘了整个流程,发现问题集中在几个地方:
1. 手动操作太多
每次发布需要:
- 手动执行 5+ 条命令
- 手动修改 3+ 个配置文件
- 手动复制粘贴合约地址
- 手动写发布文档
- 手动在群里通知
任何一个环节出错,都要从头再来。
2. 没有验证机制
改了配置不知道对不对,部署完不知道成不成功,全靠「感觉」和「肉眼检查」。
3. 知识在人脑里
只有我知道完整的发布流程,其他人接手根本不知道该怎么做。
4. 缺乏文档化
每次发布完,变更了什么、合约地址是什么,全靠聊天记录找。
我们做了什么
接下来的两个月,我们一步步优化,最终把发布时间压缩到了 15 分钟。
第一步:梳理流程,画出流程图
我们先把所有步骤写下来,画成流程图:
┌─────────────────────────────────────────────────────────────────┐
│ 发布流程 v1.0 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 代码提交 → 合约部署 → 配置更新 → 前端打包 → 部署发布 → 文档通知 │
│ │
│ 耗时分布: │
│ ├── 合约部署:30 分钟(含等待确认) │
│ ├── 配置更新:15 分钟(手动修改 + 检查) │
│ ├── 前端打包:10 分钟 │
│ ├── 部署发布:20 分钟(含验证) │
│ ├── 文档通知:30 分钟(手动编写) │
│ └── 意外处理:60+ 分钟(配置错误、环境问题等) │
│ │
│ 总计:约 3 小时(顺利的话) │
│ │
└─────────────────────────────────────────────────────────────────┘
光是画出这张图,就发现了很多问题。
第二步:消灭手动配置
最容易出错的环节是「配置更新」------每次都要手动把合约地址复制到前端配置文件。
我们的解决方案:让部署脚本自动更新配置。
typescript
// 部署完成后自动执行
func.runAtTheEnd = true;
const updateConfig = async () => {
// 读取部署结果
const staking = await deployments.get('Staking');
// 自动更新前端配置
const configPath = '../frontend/src/config/contracts.ts';
const config = fs.readFileSync(configPath, 'utf-8');
const updated = config.replace(
/137: {\s*address: "0x[a-fA-F0-9]+"/,
`137: { address: "${staking.address}"`
);
fs.writeFileSync(configPath, updated);
console.log('✅ 配置已自动更新');
};
效果:配置更新从 15 分钟 → 0 分钟,且零错误。
第三步:脚本化部署命令
把所有部署命令封装成脚本,减少记忆负担:
bash
#!/bin/bash
# deploy.sh - 一键部署脚本
TARGET=$1 # frontend | admin
ENV=$2 # preview | prod
echo "📦 目标: $TARGET"
echo "🌍 环境: $ENV"
# 构建
pnpm build:$TARGET
# 部署
if [ "$ENV" = "preview" ]; then
firebase hosting:channel:deploy preview-$RANDOM --only $TARGET
echo "✅ 预览环境部署完成"
else
firebase deploy --only hosting:$TARGET
echo "✅ 正式环境部署完成"
fi
现在部署只需要一条命令:
bash
bash ./scripts/deploy.sh frontend prod
效果:部署操作从 20 分钟 → 3 分钟。
第四步:增加预览环境
在正式发布前,先部署到预览环境验证。这个小改动帮我们避免了无数次「部署完才发现有问题」的情况。
bash
# 先部署到预览环境
bash ./scripts/deploy.sh frontend preview
# 验证无误后再发布正式版
bash ./scripts/deploy.sh frontend prod
效果:意外处理时间从 60+ 分钟 → 10 分钟(偶尔)。
第五步:文档自动化
每次发布都要写文档,而且文档格式基本固定。我们把它自动化了:
- 本地文档:基于模板自动生成 markdown 文件
- Notion 文档:通过 API 自动创建页面
- 团队通知:通过 Telegram Bot 自动发送
bash
# 创建 Notion 文档
curl -X POST 'https://api.notion.com/v1/pages' \
-H "Authorization: Bearer $NOTION_TOKEN" \
-d '{ "parent": {...}, "properties": {...}, "children": [...] }'
# 发送 Telegram 通知
curl -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" \
-d '{ "chat_id": "...", "text": "🚀 v1.4.0 已上线..." }'
效果:文档通知从 30 分钟 → 2 分钟。
优化前 vs 优化后
| 环节 | 优化前 | 优化后 | 提升 |
|---|---|---|---|
| 合约部署 | 30 分钟 | 5 分钟 | 6x |
| 配置更新 | 15 分钟 | 0 分钟 | ∞ |
| 前端打包 | 10 分钟 | 3 分钟 | 3x |
| 部署发布 | 20 分钟 | 3 分钟 | 7x |
| 文档通知 | 30 分钟 | 2 分钟 | 15x |
| 意外处理 | 60 分钟 | 2 分钟 | 30x |
| 总计 | ~3 小时 | ~15 分钟 | 12x |
最重要的是:任何人都可以执行这个流程,不再依赖特定的人。
我们学到了什么
1. 自动化要从痛点开始
不要试图一次性自动化所有东西。先找到最痛的点(对我们来说是配置更新),解决它,然后再处理下一个。
2. 脚本比文档更可靠
与其写一份「如何部署」的文档,不如写一个部署脚本。脚本不会过时,而文档会。
3. 预览环境是必须的
多花 2 分钟部署到预览环境验证,能省下无数次「紧急修复」。
4. 让机器做机器擅长的事
复制粘贴、格式检查、发送通知------这些事情机器比人做得更好。
5. 流程可视化很重要
当你把流程画出来,问题就变得显而易见了。
下一步计划
我们的发布流程还在持续优化。接下来计划做的事情:
- 接入 GitHub Actions:实现 push 到 main 分支自动部署
- 增加自动化测试:部署前自动运行测试用例
- 监控告警:部署后自动检查服务健康状态
- 一键回滚:出问题时能快速回滚到上一个版本
写在最后
从 3 小时到 15 分钟,看起来是 10 倍的效率提升,但真正的收益远不止于此:
- 更少的人为错误:自动化消除了大部分手动操作的风险
- 更快的迭代速度:发布不再是「大事」,可以更频繁地发布小改动
- 更好的团队协作:任何人都可以执行发布,不再有「关键人依赖」
- 更少的焦虑:发布不再让人紧张,因为流程是可预期的
如果你的团队也在为发布流程头疼,希望这篇文章能给你一些启发。
记住:最好的流程是不需要思考的流程。
本文来自 AI SOP 蓝皮书 的实战经验分享。
📘 AI SOP 蓝皮书:一个专注于 AI + Web3 工作流优化的开源项目,通过标准化 SOP 让团队效率提升 10 倍。
🔗 GitHub: github.com/smartchaina...
如果这篇文章对你有帮助,欢迎 Star 支持!