Fuel/CI
目录
Fuel CI 概述
Fuel 项目使用 OpenStack Gerrit 基础设施,并遵循其 开发流程。
除此之外,还有一个 Fuel CI -- 第三方 CI 服务,它运行额外的检查和测试,这些检查和测试尚未在 OpenStack Infra gate 中支持。
Fuel CI 由一个 Jenkins 主节点组成,它通过 Gerrit Trigger 插件使用服务帐户 Fuel CI 连接到 Openstack Gerrit。 还有大约 30 个裸机 Jenkins 从节点。 所有 Jenkins 从节点都运行 Ubuntu 14.04 并通过 fuel-devops/fuel-qa 框架执行单元测试和部署测试。
链接
部署测试
通用部署测试
要为 Fuel 运行部署,您需要
- Fuel 节点的 ISO 镜像 [1]
- fuel-devops [2] - 用于管理虚拟机并以 PostgreSQL 数据库形式存储状态(vm 名称、网络接口..)的命令行工具
- fuel-qa [3] - 基于 proboscis 的测试框架
基本设置在 [4] 中描述。
测试流程如下
- 使用 fuel-devops 工具
- 通过内部网络创建多个虚拟机 - 所谓的 devops 环境
- 使用 fuel-qa 框架
Step 1. install Fuel node on first vm using the ISO image provided by the local path on the host server Step 2. bootstrap other vms with basic OS image provided on Fuel ISO Step 3. configure Fuel environment via API according to certain scenario Step 4. run deployment
测试场景在 fuel-qa 文档中描述,例如 [5]。
CI 上的部署测试
fuel-library 代码本质上是一组 Puppet 清单,这些清单用于部署通过 Fuel 界面定义的环境配置。 这些清单作为 RPM 包 [6] 传递到 Fuel 节点。
为了在 CI 上节省时间和资源,我们不会为每个测试从头开始重新创建环境,而是定期获取“足够稳定”的 ISO,将其上传到 Jenkins 从节点,创建基本环境(步骤 1 和 2),并快照所有虚拟机。
然后,每次提交时,我们
- 使用 mock 在基于 CentOS 的 docker 容器中构建 fuel-library 包
- 使用 sbuild 在基于 Ubuntu 的容器中构建 deb 包
- 从快照恢复 devops 环境
- 上传并在 Fuel 节点上安装包
- 运行部署测试场景(步骤 3 和 4)
您可以在 [7] 中查看详细日志
- [1] 夜间 ISO 构建
- [2] fuel-devops
- [3] fuel-qa
- [4] 测试环境设置
- [5] 测试场景
- [6] fuel-library 规格文件
- [7] 测试运行示例
- [8] 基于 YAML 的 devops 环境模板
Puppet OpenStack 的 CI
Fuel CI 作为一组 Puppet OpenStack 项目模块的第三方 CI,这些模块用于 fuel-library
- puppet-aodh
- puppet-ceilometer
- puppet-cinder
- puppet-glance
- puppet-ironic
- puppet-heat
- puppet-horizon
- puppet-keystone
- puppet-murano
- puppet-neutron
- puppet-nova
- puppet-openstacklib
- puppet-sahara
- puppet-swift
对于这些项目的每次提交,我们都会启动一个 构建集,目前包括 fuel-library noop 测试和 2 个部署测试。 部署测试与我们为 fuel-library 运行的部署测试共享相同的 工作流程 和测试场景。 有关详细信息,请参阅 [规范]。
为了防止 Puppet OpenStack 的更改对 Fuel CI 引入回归,并帮助 Puppet OpenStack 开发人员调查 Fuel CI 故障,Fuel 团队 承诺监控和调查 Fuel CI 中 PuppetOpenStack 的故障。
有关 Fuel CI for Puppet OpenStack 的任何问题,请联系 #fuel-dev IRC 频道。
打包 CI 概述
Fuel 的打包 CI 为所有 Fuel 存储库构建 RPM 包。 使用 Perestroika 构建和发布包。
打包 CI 由一个 Jenkins 主节点 packaging-ci.fuel-infra.org 组成,它通过 Gearman 插件连接到 Zuul 实例 gate.fuel-infra.org。 Zuul 使用服务帐户 Fuel Packaging CI 附加到 Openstack Gerrit。
还有几个 Jenkins 从节点运行 Ubuntu 14.04 (LTS)
- 一个发布者和镜像主机 (VM)
- 包构建从节点 (HW)
- 用于安装测试的从节点 (HW)
- 用于部署(系统)测试的从节点 (HW)
构建的包在 packages.fuel-infra.org 站点上可用。