工程效率 约 6 分钟阅读

把发布流程做成一张可执行的清单

个人项目最容易出问题的地方,往往不是代码本身,而是发版时少做了一步。把流程写下来,比每次靠记忆更可靠。

我做过几个长期维护的小项目,发版频率不算高,但每次都要重新回忆:版本号改了吗?静态资源更新了吗? 备份做了吗?回滚路径是什么?后来我把这些步骤整理成一张清单,发版时逐项确认,问题明显少了。

一、发布前先确认版本

版本号最好只在一个地方定义,构建时再写进产物和版本接口。不要在多个文件里手改,否则很容易出现页面显示 1.2.0、 安装包却是 1.2.1 的情况。

{
  "version": "1.2.1",
  "build": "20261105.1",
  "notes": "修复列表分页与缓存问题"
}

构建号可以带上日期,方便在日志和发布记录里对应。版本说明尽量写给用户看,而不是只写“修复若干问题”。

二、构建后做三项校验

sha256sum dist/app.tar.gz
du -h dist/app.tar.gz
curl -fsS https://example.com/api/version

文件大小和摘要看起来麻烦,但它们是判断“线上到底是不是这份包”的最快方式。尤其是手动上传时, 一次网络中断就可能留下一个不完整的文件。

三、部署时保留可回滚路径

我习惯把每次发布放到独立目录,再用一个稳定的软链接指向当前版本。切换时只改软链接,回滚也只是把链接指回去。

/srv/app/releases/20261105-1/
/srv/app/releases/20261105-2/
/srv/app/current -> releases/20261105-2

数据库迁移要单独考虑。能向后兼容的字段先加,不要在同一版里既删旧字段又要求旧版本还能读。 如果必须做破坏性变更,先确认回滚时数据是否还能恢复。

四、发布后的冒烟检查

冒烟检查不需要很复杂,但要固定下来。比如每次都检查版本接口、首页标题和一个核心写操作, 就能覆盖大部分低级错误。

五、把结果记录下来

发布完成后,在项目里留一条记录:版本号、时间、变更摘要、产物摘要、回滚目录。 下次出问题时,这些信息比聊天记录可靠得多。

清单的价值不在于形式,而在于把“我记得要做”变成“流程要求我做”。

如果项目只有一个人维护,更值得这样做。没有人帮你兜底时,流程就是最简单的保险。

← 返回文章列表 个人软件技术分享