Difference between revisions of "Fuel/CI"
(→Fuel CI Overview) |
(→Fuel CI Overview) |
||
Line 1: | Line 1: | ||
== Fuel CI Overview == | == Fuel CI Overview == | ||
− | Fuel project uses the | + | Fuel project uses the OpenStack Gerrit infrastructure and follows its [http://docs.openstack.org/infra/manual/developers.html#development-workflow 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. | |
− | All Jenkins slaves are running Ubuntu 14.04 and perform unit tests and deployment tests via [http://docs.fuel-infra.org/fuel-dev/devops.html#environment-creation-via-devops-fuel-qa-or-fuel-main fuel-devops/fuel-qa] framework. | + | 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 [http://docs.fuel-infra.org/fuel-dev/devops.html#environment-creation-via-devops-fuel-qa-or-fuel-main fuel-devops/fuel-qa] framework. |
+ | |||
+ | === Links === | ||
+ | * [https://github.com/fuel-infra/jenkins-jobs/tree/master/servers/fuel-ci Jenkins Job Builder configuration] | ||
+ | * [https://github.com/fuel-infra/puppet-manifests/tree/master/modules/jenkins/manifests Puppet manifests] | ||
+ | * [https://ci.fuel-infra.org Jenkins instance] | ||
+ | |||
+ | == 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 | ||
+ | |||
+ | # rebuild a fuel-library package in a CentOS-based docker container | ||
+ | # revert devops environment from snapshot | ||
+ | # upload and install package on Fuel node | ||
+ | # run the deployment test scenario (steps 3. and 4.) | ||
+ | |||
+ | You can refer to detailed logs in [7] | ||
+ | |||
+ | * [1] [https://ci.fuel-infra.org/view/ISO/ nightly ISO builds] | ||
+ | * [2] [https://github.com/openstack/fuel-devops fuel-devops] | ||
+ | * [3] [https://github.com/openstack/fuel-qa fuel-qa] | ||
+ | * [4] [https://docs.fuel-infra.org/fuel-dev/devops.html test environment setup] | ||
+ | * [5] [https://docs.fuel-infra.org/fuel-qa/base_tests.html#module-fuelweb_test.tests.test_neutron test scenario] | ||
+ | * [6] [https://github.com/openstack/fuel-library/blob/master/specs/fuel-library8.0.spec fuel-library spec-fiel] | ||
+ | * [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] | ||
== Tests == | == Tests == |
Revision as of 11:32, 19 November 2015
Contents
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.
Links
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
- rebuild a fuel-library package in a CentOS-based docker container
- revert devops environment from snapshot
- upload and install package on Fuel node
- run the deployment test scenario (steps 3. and 4.)
You can refer to detailed logs in [7]
- [1] nightly ISO builds
- [2] fuel-devops
- [3] fuel-qa
- [4] test environment setup
- [5] test scenario
- [6] fuel-library spec-fiel
- [7] test run example
- [8] YAML-based templates for devops environments
Tests
Fuel Library repo
The heaviest tests are those for fuel-library changes. Each commit to 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.