Continuous anything

Continuous Anything

Continuous Anything is a synonyme for :

. Continuous Integration

. Continuous Delivery

. Continuous Deployment

which is considered as the Grail for DevOps people. So i tried to draw a full process regarding to this 3Cs.

Continuous Integration

Continuous integration is a practice in software engineering, consisting of merging all pieces of code from all developers in the mainline. Continuous integration best practices :

  • maintain a source code repository
  • automate the build
  • make the build self-testing
  • Everyone commit on the mainline every day
  • Each commit should be built, if not, commit can be refused
  • keep the build fast
  • Test in a cloned prod env
  • Everyone (developpers) can see the results of the last build
  • automate deployment

By following these best practices, you should be able to approach the famous Grail !

Jenkins is a great tool to perform Continuous Integration, so you use it for all projects to run tests.

Continuous Delivery

Continuous Delivery is the ability to deliver code/software on several environments such as QA env, STAGING env and so on. Continuous delivery is based on the ability to build the source code at any time.

In my opinion, Jenkins is, once again, the best open source software for Continuous Delivery.

Continuous Deployment

Continuous Deployment is the ability to deploy code or software on different plateforms.

Rundeck is also a great tool to run such workflows.

Big Picture

All steps are reproduced on this big picture :

. Dev push functional code on Gitlab

. Gitlab triggers Jenkins by a webhook

. Jenkins gets source code, runs unit tests and reports

. If unit tests ran successfully, Jenkins runs functional tests and reports

. If functional test ran successfully, Jenkins runs acceptance tests and reports

. If all tests are ok then a Merge Request is performed from Develop branch on QA branch

. Gitlab triggers Jenkins about Merge Request

. Jenkins gets source code, merges it and triggers Rundeck

. Rundeck deploys the source code on QA env and Jenkins reports

. Jenkins performs QA tests and reports

. A Merge Request is sent to merge QA branch on Release branch

. Gitlab triggers Jenkins about Merge Request

. Jenkins gets source code, mergeit and triggers Rundeck

. Rundeck deploys the source code on PROD env and Jenkins reports

Source code is on production env !

ci_cdd_process

Tools

Jenkins : https://jenkins-ci.org/

Gitlab : https://about.gitlab.com/

Rundeck : http://rundeck.org/

Enjoy, and feel free to leave a comment.

Comments !