Jump to: navigation, search

Difference between revisions of "Fuel/CI"

(Fuel CI Overview)
Line 62: Line 62:
* [7] [https://ci.fuel-infra.org/job/master.fuel-library.pkgs.ubuntu.neutron_vlan_ha/2699/console test run example]
* [7] [https://ci.fuel-infra.org/job/master.fuel-library.pkgs.ubuntu.neutron_vlan_ha/2699/console test run example]
* [8] [https://review.openstack.org/#/c/240170/ YAML-based templates for devops environments]
* [8] [https://review.openstack.org/#/c/240170/ YAML-based templates for devops environments]
== Tests ==
=== Fuel Library repo ===
The heaviest tests are those for fuel-library changes. Each commit to [https://github.com/stackforge/fuel-library/ fuel-library repo] run two deployments with three virtual machines each. These jobs use preconfigured environment (master node is already deployed and three slaves enabled) and don't do clean start for every run, which may affect the result.

Revision as of 11:32, 19 November 2015

Fuel CI Overview

Fuel project uses the OpenStack Gerrit infrastructure and follows its Development workflow.

Additionally to that, there is a Fuel CI -- third-party CI service which runs additional checks and tests which are not yet supported in OpenStack Infra gate.

Fuel CI consists of one Jenkins master node, which is connected to Openstack Gerrit via Gerrit Trigger plugin using service account Fuel CI. There is also about 30 bare-metal Jenkins slaves. All Jenkins slaves are running Ubuntu 14.04 and perform unit tests and deployment tests via fuel-devops/fuel-qa framework.


Deployment tests

Generic deployment test

To run deployment for Fuel you need:

  • ISO image for Fuel node [1]
  • fuel-devops [2] - the cli tool which manages virtual machines and stores state (vm names, network interfaces..) in a PostgreSQL database
  • fuel-qa [3] - test framework based on proboscis

Basic setup is described in [4].

And the test flow is as follows:

  • with fuel-devops tool:
    • create several vm's connected via internal network - a so-called devops environment
  • with fuel-qa framework:
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

Test scenarios are described in fuel-qa documentation, see for example [5].

Deployment test on CI

fuel-library code is essentially a set of puppet manifests which are used to deploy the enviroment configuration defined via Fuel interface. These manifests are delivered to Fuel node as RPM package [6].

To save time and resources on CI we don't recreate environment from scratch for every tests but regularly take a "stable enough" ISO, upload it to Jenkins slaves, create base environment (steps 1. and 2.) and snapshot all its vms.

Then, on every commit we

  1. rebuild a fuel-library package in a CentOS-based docker container
  2. revert devops environment from snapshot
  3. upload and install package on Fuel node
  4. run the deployment test scenario (steps 3. and 4.)

You can refer to detailed logs in [7]