Pegasus以往只会在版本发布之前,进行少数几个编译器版本(如gcc4.8, gcc5.4)的测试。但众所周知,C++世界里,不同版本的编译器所产出的编译错误大有不同,有时gcc5.4.0能够顺利编译通过,但在clang9下却报出一连串errors。
如果碰巧发版前,我们使用的编译器忽略了这些语法错误,那就留下了隐患,严重的甚至会影响数据一致性。
- zauto_write_lock(app_lock());
+ zauto_write_lock l(app_lock());
(这是一个在gcc5能顺利通过的语法错误)
同时作为Code Reviewer,单靠人眼很难仔细去检查每一行代码的细节,除非每个PR都pull下来用C++ IDE看一遍。那么有一种解决办法,就是让每个PR都跑全版本编译器测试。
我们就是这么做的:
strategy:
fail-fast: false
matrix: