lain ci系统架构解析 - lichao-mobanche/lain GitHub Wiki

整体架构图:

images

  • 将jenkins直接部署在物理机上,同时使用virtual box启动三个虚拟机模拟lain集群的三个节点。
  • 提供了jenkins最新的UI BlueOcean。
  • ci测试完成之后会将测试状态返回到lain仓库的README。
  • 在用户权限控制方面,管理员拥有较高权限,暂不提供用户注册功能,匿名用户只提供read权限。
  • 由于现在提交量还不是很大,目前只支持线性构建

系统详解:

images

  • 在jenkins上构建两个实例job1(lain-bootstrap)与job2(snapshot),分别负责系统测试与构建环境清理。将node1设置为jenkins的slave,并将job1绑定到node1。而job2运行在物理机上,负责清理构建环境。job1构建完成后,无论是否成功都会自动激发job2的构建,以避免对下测试造成影响。 这样实现了将环境构建代码与测试代码分离,用户提交的代码只能运行在虚拟机node1上,较为安全可靠。
  • 当用户在lain仓库提交了pr以后会自动激发job1的构建,job1会自动从github拉取pr代码到node1,并运行bootstrap。
  • job1构建完成会自动激发job2构建,job2会将三个虚拟机重新恢复到之前预存的sanpshot,为下次测试做准备。

版本信息如下:

  1. virtual box = 4.3.4
  2. host os = centos-6.9
  3. guest os = centos-7.4
  4. jenkins = 2.87

使用的jenkins插件:

  • GitHub Pull Request Builder = 1.39.0
  • Blue Ocean = 1.3.1
  • Embeddable Build = 1.9