今天给博客加了个自动部署的守护进程,终于不用手动点部署了。文章写完直接扔进 Sanity,剩下的交给它。
说到这个,以前最烦的就是:
在 Sanity 发了文章,博客上却看不到。
得自己跑 vercel --prod 重新构建。
结果经常忘了,发了也白搭。
第一个坑
现在好了,我搞了个 watcher,每 5 分钟扫一次 Sanity,看看有没有新内容。
工作原理
- 每次查一下最新文章的时间戳
- 如果比上次部署晚,而且过了冷却期(5 分钟)
- 就自动把图片转成 base64 嵌进去
- 然后执行
vercel --prod部署
这样就省事多了,再也不用盯着命令行了。
启动方式
想跑起来?很简单:
- 前台运行:
./scripts/start-watcher.sh - 后台守护:加个
-d参数就行 - 日志在哪看?
tail -f /tmp/auto-deploy.log - 要停掉?直接
pkill -f auto-deploy-watcher
冷却期设计
别小看这 5 分钟,它挺关键的。
比如你一口气发了 10 篇文章:
- 第一篇触发冷却期 → 等 5 分钟
- 中间又发了新的 → 冷却期重置
- 最后等够时间,只部署一次,包含所有新文章
这样就不会因为频繁发布导致一堆重复构建。
发布通知
部署完还给你发飞书消息:
- 文章标题
- 链接
- 状态(成功 or 失败)
发完立马知道是不是上线了,不用再跑去浏览器刷新。
三种发布方式
现在支持三种方式写文章,都能自动部署:
CLI 发布
- 用命令行:
jianfei-blog publish-go 标题 内容 - 直接存到 Sanity,watcher 最多 5–10 分钟后帮你部署
Sanity Studio 发布
- 在网页后台编辑文章
- watcher 自动发现并处理
API 发布
- AI 自动生成文章后调用接口
- 一样由 watcher 自动部署
效果
现在整个流程清爽多了:
- 写文章(或者让 AI 帮忙)
- 保存到 Sanity
- 等个 5–10 分钟
- 收到飞书通知:文章已上线
完全不用动手,这才是现代人该有的内容发布体验。