从一团乱麻到自动化:重构《巫师的悖论》更新日志
兄弟们,今天来聊聊我们最近在《巫师的悖论》官方网站上折腾的那摊子事儿——更新日志。这玩意儿看着不起眼,但之前是真的把我折腾得够呛。我们这款游戏,更新频率挺高的,但每次发版,那个更新日志都得我们手动去编辑、去排版、去上传。
长久以往,简直就是一锅粥。你打开以前的日志看看,一会儿字体大小不一样,一会儿时间写错了,运营同事天天抱怨说,写日志比测试Bug还费劲。我一合计,不行,这效率太低了,必须得想个辙,把这部分工作给自动化了。
下定决心:彻底抛弃手动模式
说干就干,我第一步是梳理我们现有的发布流程。我们团队小,没有那种动辄几十上百号人的DevOps团队,所以解决方案必须轻量级,不能为了一个日志系统再引入一个复杂的中间件。我盯上的目标就是:让日志内容能够跟版本控制系统(Version Control)紧密地结合起来。
以前我们是这么搞的:程序员打好包,交给测试,测试通过了,然后运营再打开Word文档,根据开发提供的简报,撰写日志,3复制粘贴到网站后台发布。这中间环节太多了,而且人手操作,出错率是百分百的。
我拍板决定,要打造一个专用的更新日志生成器。
实现过程:从抓取到部署的艰辛
我启动这个项目的时候,最初是想用Python写个脚本,直接去抓取我们版本控制系统里的Commit信息,然后格式化输出。但很快就发现问题了:Commit信息太糙了,面向程序员的,玩家根本看不懂。我们需要的日志,是经过提炼的、有重点的。
我调整了策略:
- 第一步:定义结构。 我先明确了更新日志必须包含的几个要素:版本号、发布时间、主要新内容(用绿色标出)、Bug修复(用红色标出)、优化调整(用蓝色标出)。
- 第二步:定制录入。 我设计了一个超级简单的后台界面,让运营在发布版本前,只需要填写这几个结构化的字段,系统就自动保存成标准格式的数据。
- 第三步:打通脉络。 最关键的,我编写了一个接口,这个接口跟我们的发版工具对接起来。只要发布工具确认新版本上线,它就触发日志系统的生成命令。
这中间,最大的一个麻烦是时间同步。因为我们有些内容是提前录入的,但发布时间得是“准确上线的那一刻”。我调试了好久,才搞定时区和服务器时间同步的问题。我强制规定,所有时间都以主服务器为准,哪怕运营那边慢个几分钟,显示的时间也必须是发布成功的那一刻,避免玩家产生混乱。
看到效果:省下来的就是时间
当我把这套流程全部跑通,并部署到线上环境时,那种成就感别提了。我们第一次使用新系统发版那天,运营小李以前要花一个多小时才能搞定的日志,现在只用了不到五分钟,主要时间都用在确认内容描述是否准确上了。
系统自动完成了排版、时间戳、颜色标记、以及新旧日志的衔接。最重要的是,网站上的日志再也不会出现那种格式乱七八糟、错别字连篇的“手工痕迹”了。
为什么我对这种“小修小补”的工作这么上心?我以前待过一家公司,就是因为凡事都依赖人工操作,导致一个小小的项目修改,都得耗费巨大的人力成本。有一次,因为一个配置文件里的错别字,整个生产环境停摆了半天。当时我就想,人呐,不应该把时间浪费在重复性的、机械性的工作上。
现在我看到任何可以解放人力、提高效率的地方,我都忍不住要动手去把它变成机器可以代劳的事情。这回《巫师的悖论》更新日志的重构,虽然只是一个小小的优化,但它彻底解决了我们团队长期以来的一个痛点,让我觉得,这几天的折腾,值了。