如果你已经有像Husky这样的系统,可以在pre-commit和pre-push之前测试你的代码,那么使用持续集成系统来测试你的代码的意义是什么?
如果你已经有像Husky这样的系统,可以在pre-commit和pre-push之前测试你的代码,那么使用持续集成系统来测试你的代码的意义是什么?
预提交钩子和预推钩子非常适合快速操作和测试。有时您甚至可以在IDE中设置钩子,每次保存文件时运行快速单元测试。但通常情况下,您会有多个测试套件,与单元测试不同的是功能测试、集成测试和性能测试通常需要更长的时间运行,并不适合于钩子。
此外,您希望在构建可交付物的同一环境中运行测试,这通常不是您的本地机器。
使用CI系统的另一个原因是运行后合并测试,以验证多个并行合并引入的问题是否存在。
总之,运行的测试越多,效果越好,CI系统允许您运行预合并测试(通常由某种拉取请求钩子触发)和后合并测试。所有这些都在一个受控可靠的环境中进行。
我并不关心它在你的本地环境中是否能通过,因为你可能在环境路径中拥有某些不同版本的相关库。我想要确定的是,任何人的贡献都不会在与我们提供的特定库版本链接时破坏软件。
ext/open_ssl
,则应以不同方式运行。本地测试套件很少具有允许开发人员在每个所需平台上测试每个可能版本的设置,但在 CI 流水线中设置的测试套件可以做到这一点。