持续集成(Continuous Integration, CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。 每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
目前医务通采用的是 Jenkins + Gogs + Ansible 实现的 CI 架构。源码管理使用 Gogs 工具,Jenkins 作为构建任务工具,提供了简单易用的 Web GUI,可以触发构建、查看构建详情、构建产物自动部署等。生产环境多个服务器,使用 Ansible 做自动部署。
由于历史原因,没有接入 Sonar 一类的代码质量检测工具,由于目前代码库非常大,而且编程语言和风格比较多,接入 Sonar 需要大量的时间和人力去处理此前的代码质量问题,先作为低优先级任务。
graph LR
components(组件)
automate(自动化构建)
Jenkins
git(代码协作)
Gogs
deploy(部署工具)
Ansible
code_quality(代码质量检测)
sonarqube(Sonarqube)
components-->automate
components-->git
components-->deploy
components-->code_quality
automate-->Jenkins
git-->Gogs
deploy-->Ansible
code_quality-->sonarqube
TODO
TODO
[ ] 内服 205 升级硬件,提高构建性能
[ ] 使用 Drone 替代 Jenkins 作为轻量构建工具