@babydragon
2015-07-28T10:17:40.000000Z
字数 970
阅读 1574
Jessie Frazelle是Docker核心团队成员,负责Docker的测试基础设施。他描述了这些测试设施是如何构建在Docker容器之上的。
这些测试基础设施由大约50台服务器组成。它们涵盖六种Docker保存镜像使用的存储驱动、所有Linux发行版和Docker支持的各种Linux内核版本。Windows平台的Docker客户端也涵盖在测试基础设施中,它在Windows主机上提供了运行Docker的轻量级虚拟机。
推送到master分支和拉取请求(pull requests, PR)都有它们自己的工作流。除了执行所有Docker测试用例之外,每次成功推送到master分支之后,都会发布Docker二进制文件和文档,以提供给希望尝试前沿版本的人。Docker二进制文件构建服务(docker-bb)负责处理构建master分支的二进制文件。
拉取请求有自己的工作流和服务器。每个拉取请求(每周有超过100个),都会针对实验性二进制文件和Windows Docker客户端执行Docker测试用例。Frazelle创建了一个小应用Leeroy,管理所有的拉取请求(PR)的构建。它的职责包括更新每个拉取请求的状态(等待、成功、失败或者错误)和验证Docker原始开发者认证。
Docker使用Jenkins作为持续集成服务器,因为它提供了灵活性,同时控制团队需求。正如预期那样,Frazzele使用官方镜像来将Jenkins运行在容器中。
作为服务发现工具的Consul,是整个测试基础设施的关键部分。Frazelle利用它的服务标记功能来追踪数据,包括Linux内核版本、存储驱动。这样反过来有助于故障排除活动。Consul的健康检测利用consul-alerts组件,在服务出现故障的时候通知团队成员。
Docker团队使用实时分布式消息平台nsq集成这些流程。例如用于链接GitHub钩子到Docker二进制构建服务(docker-bb)或者部署master分支上的文档。
支撑测试基础设施的所有服务都运行在Docker容器中,这些测试基础设施总是使用Docker最新的发布候选版本。有时也会使用最新的master二进制文件,以便尽早的发现缺陷。