看到社区两篇帖子
阅读中我感觉到,打deb包其实还是挺麻烦的,一方面不少命令操作有学习成本,另一方面后续维护更新时之前的工作还得重来一遍,手动放置目录、替换文件、写控制脚本。打包过程很多是机械重复工作,如为飞书打一个包,后来飞书更新了个小版本,除了版本号和更新描述可能变,整个包结构、打包流程等是不会变的。所以,我们就可以有程序来让我们从重复劳动中解放出来。
我的想法是用gradle,让打包过程完全由脚本控制,我们可以出一个工程模板,实现好打包过程中的常见操作,然后打包者就可以仅了解我们封装的DSL,像修改配置一样修改打包流程。
如图,打包的各项操作已经封装好,实现icq的打包像修改配置一样简单清晰。 代码放Github了,只要 ./gradlew build
就能完成icq的打包。
打包流程脚本化至少有以下好处
- 简化打包入门门槛。对于不太复杂的软件包,只需修改如图部分配置即可,实际的各种操作可以复用。
- 简化维护管理成本。打包开始时脚本可以直接下载官方资源文件,当官方有更新时只要替换下载链接和版本信息即可。我们对官方包的图标、主题修改也可以脚本自动拆包自动打包,不用担心资源被替换。
- 降低社区信任成本。现在商店打包靠人肉维护,尽管我们体量小目前没出啥问题,但理论上打包者是直接上传二进制的,审核主要在打包规范方面,如果真有人包藏祸心,可能造成严重后果。如果我们普及脚本打包,脚本是可审核的,而二进制都来自官方,大大提高可信度。
打包流程有了脚本,完成自动化才算离开手工业时代。
很羡慕的隔壁aur,他们就是类似的模式嘛。我们没有他们便利的包管理工具,大量活跃的社区人员,他们这种模式是值得我们借鉴的。