In my new role here at Cisco I show people how powerful the Cisco OpenStack Private Cloud solution can be for developers. I made the below video last night to demonstrate continuous integration.
The video is a scenario for a new company called lawngnomed.com. The company provides lawn gnomes as a service (LGaaS). Under the cover of darkness LG technicians will place 100 gnomes on the front yard of an address you specify. The person living in the address you specified will wake up to find 100 gnomes on their front yard with a special greeting. LG wants to add a new feature to their ordering site to allow for a personalized greeting.
The flow goes as follows:
- LG decides they want to try out a new feature
- Developers implement feature and perform unit tests to add the feature.
- Developers check in the feature to a private repository. In this case they are using Gitlab, an open source version of the service that Github offers.
- Gitlab has a trigger connected to Jenkins, the continuous integration server. When Jenkins sees a code checkin from the project it performs integration tests on the merged code.
- Jenkins integration tests that pass then are pushed into a new Docker Container that is uploaded to a locally hosted docker registry.
- Jenkins has a production job that monitors the Docker registry. When new containers are pushed up, a job is kicked off to go through the containers, take them off line and put up the new container. The load balancer (NGINX) handles the load.
This demo will be posted on Github with all the devOps code as I continue to refine it. Also, any suggestions are more than welcomed! Perhaps I’m doing it wrong? I will post my solutions and then let Cunningham’s law dictate how accurate I am.