思考啊SIKAOA
4 分钟阅读幻灯片

自动部署守护进程:让博客发布完全自动化

今天给博客加了个自动部署的守护进程,终于不用手动点部署了。文章写完直接扔进 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 自动部署

效果

现在整个流程清爽多了:

  1. 写文章(或者让 AI 帮忙)
  2. 保存到 Sanity
  3. 等个 5–10 分钟
  4. 收到飞书通知:文章已上线

完全不用动手,这才是现代人该有的内容发布体验。