Openstack is one of the best open source Cloud Computing Project. Here, in this post we will discuss about how we can create a continuous integration environment for Openstack. The CI environment for openstack includes some of the projects such as functional tests, unit tests, patch review system, integration tests and automatic builds. Some of the openstack tools such as Tempest, Grenade and Devstack will be handy in providing necessary automations and to effectively make CI environment.
These components are integrated with the build and Gerrit (patch review system) so that appropriate verification can be done for every change made to Openstack projects. This will ensure reliability, security, usability, dependencies and other characteristics in the environment are properly organized. Having said that, you may need a cloud infrastructure to run all these components.
First, let us see, how the patch review process works in Openstack projects and some of the tools used to automate the process.
The following are the steps involved in doing the process.
Continuos Integration Process:
1. A patch is submitted by someone for review, managed by Garrit. Zuul scheduler is configured in such a way that CI environment will be listening for the new patches on this service.
2. Then, Zuul Scheduler receives those changes, and then it will check for dependencies and changes made by merges.
3. The changes made will be handled as Jenkins jobs which is one of the build automation system. Nodepool is one of the tools which will be used to create the images and virtual instances for running the jobs. It will automate the job creation which needs to be tested in the environment. (Jenkins Job Builder)4.
4. There are many different job types hosted by Openstack. Based on the specific purpose, each jobs may use existing open source tools and some of the openstack projects such as Devstack and Tempest Projects. The following are the purposes of the job,
• Integration tests (using Tempest and DevStack)
• Unit tests
• Code language checks (Python, pep and pylint)
• Upgrade tests (using Grenade, DevStack and Tempest)
5. After running all the jobs, its results (failures and successes) are reported back to Gerrit and may influence patch reviews such as voting, verifying or even merging the patch code.
The whole process above mentioned can be automated.