其实题目说是近年用过的自动构建系统,实际上是对我近年用的自动构建方法做一个简单的总结。

我主要用过三类的自动构建的方法,一类是使用现成的持续集成(CI)系统,一类是使用Git的内置钩子来触发shell脚本来构建,另一类则是定时轮询构建。

我用过的持续构建系统主要是 Jenkins CI 和 Github 的 Travis CI。这类方案的好处是可定制性高、操作方便、功能强,但是比较耗费资源。之前做Unity项目的自动构建就是使用的 Jenkins CI。Unity 使用 Jenkin CI 打包确实还算可以,但是在 Linux Headless 服务器上有些坑,比如没法输入Unity 的激活Key,亦或者是需要模拟X环境,又或者是Unity的Linux支持不佳。但这些都算是Unity自身的坑,而不是Jenkins的坑。Github的Travis CI则是我用来自动更新我的Wiki,以及对键盘固件项目做自动构建用的。使用起来的体验其实也还算不错,但因为不是跑在自己的服务器上而有点难用。

Git内置钩子自动触发构建则是大科二导航和土地调查管理项目使用的。这种方法就比较的轻量,用起来和比较顺手。但是坑的地方主要是构建过程会阻塞Git Push 的进程,如果构建时间较长则会导致Push很久也Push不上去,而且不会有实时的提示;并且,构建过程一般都是使用Git用户,成品的部署过程中可能会遇到权限上的问题。权限上的问题还是我太菜了,但是阻塞这个问题就比较的烦人。

所以部分项目我就用了轮询,轮询构建就不会阻塞Push进程,也不会造成频繁Push而多次构建。但是这就失去了构建的实时性。

总结:
– 持续集成系统:
– 优点:灵活高效,可视化配置
– 缺点:耗费系统资源
– Git 钩子:
– 优点:资源占用低,不需要安装额外软件
– 缺点:会阻塞Push进程,多次Push会多次构建
– Crontab 轮询:
– 优点:资源占用低,不阻塞Push进程,不需要额外安装软件
– 缺点:实时性差

个人来说,如果有可能的话,还是希望使用CI做自动构建;但是这个服务器性能实在是有点弱鸡,就只能退而求其次使用Git钩子自动构建简单的工程了;对于复杂的工程,就使用Crontab轮询,每天定时尝试构建。

分类: 编程

0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注