凡是超过 90 秒的事情都要自动化,开发辅助工具介绍

Author Avatar
Pang Jian 8月 03, 2018
总字数:1.2k 预计阅读:4 min
  • 在其它设备中阅读本文章

Alex 是英国一家客户支持服务初创企业的创始人,他写过一篇博客,名字叫做《 Now that’s what I call a Hacker 》(这才是我所谓的黑客)。故事的主角是他的前同事的前同事。这位老兄离开后 Alex 的前同事检查他的代码的时候惊讶的发现,原来这个家伙凡是需要超过 90 秒以上的工作全都不自己干,他会编写脚本,让程序自动执行完。这些工作包括向老婆大人汇报、自动修复客户数据库、编不上班借口、自动泡咖啡等等。

凡是超过 90 秒的事情都要自动化,这句话深深的触动了我。

我们作为软件开发人员都希望把精力放在有价值的设计、编码等工作上。但是实际情况并非如此,我们平时做着大量的重复性工作,特别像网银这样复杂的产品,功能非常复杂、工程结构也非常复杂、开发人员众多,每次从开始工作到真正进行开发需要经历繁杂的过程,这些工作无一例外的都远远超过了 90 秒。

作为网银开发者的一员,从开始工作到真正进行编码需要进行如下工作:

  1. 下载开发流
  2. 截取开发流中与 IDE 配置有关的文件。20 多个工程的配置文件
  3. 替换 pom.xml 中的版本号。20 多个工程的
  4. 根据开发环境客户化文件
  5. 编译。同样也是 20 多个工程,按照依赖顺序。
  6. 启动

是时候介绍我们开发的工具了– Project-Helper 调流辅助工具。
这是使用说明文档
doc

这是它运行的样子

running

这个工具是一个命令行工具,包含下面几种功能:

获取配置文件:
工具的运行需要一个配置文件,这个文件会指导程序如何运行以及一些参数该如何配置。比如,版本号是什么、连接的数据库地址是什么、连接后台还是挡板等等。你可以通过一个命令获取一个配置好的模板,按照自己的需要修改几个值即可。

初始化工程目录:
初始化的过程包括,截取全部工程的 IDE 配置文件,比如.settings、.project、.classpath 等。同时删除每个工程下的 traget 文件夹。

替换 pom.xml 版本号:
根据配置文件中的要求,把每个工程下的 pom.xml 里面的依赖工程版本号调整正确。防止手工出现漏改、错改。

客户化文件:
由于运行环境不同,很多的配置文件需要客户化。这个功能可以从云端下载一份最新的客户化模板,根据配置文件渲染模板,然后将渲染好的配置文件覆盖到工程文件上。随着云端模板的丰富,工具客户化的能力就越强,当出现新的需要客户化的文件时,不需要更新工具,只需要更新云端模板,所有用户就都能使用了。

编译 & 运行:
工具会解析 pom.xml 文件中的依赖顺序,按照自底向上的依赖顺序挨个进行编译。碰到可以运行的 web 工程,可以选择直接启动或者打包成 war 包。

全自动:
当然,你把上面的命令执行一遍,也超过 90 秒了。所以工具提供了全自动模式,在全自动模式下,工具会根据配置文件的信息帮你把以上全部过程自动执行一遍。不出意外的话,开发流就可以直接运行起来。

这个工具的优势就在于可以将原先大量手工重复操作自动化运行,节约大量的手工操作成本和手工出错的机会。开发人员将全部精力放在程序的设计、开发和测试上。同时,工具是基于 Nodejs 开发的命令行工具,遵从跨平台和命令行哲学。可以同时在 Windows、Linux、MacOS 上运行。纯命令的操作方式,方便与持续集成平台集成,为后期 DEVOPS 提供支持。

从根本上提升了开发人员的末端效率,将开发人员从简单重复性的劳动中解放了出来,虽然这只是一个小小的工具,但却体现了个人网银团队善于钻研,从小处着手的优良传统。在提升产品质量提升开发效率的道路上,我们会不断探索,争取更大的突破。

Documentation licensed under CC BY-SA 4.0.
本文链接:https://www.pangjian.me/2018/08/03/automation-things-over-90-seconds/