Continuous Integration, Delivery and Deployment


Bicycle

Continuous Integration(CI)

  • Is the practice, in software engineering, of merging all developer working copies
  • Its main goal is to prevent problems when merging code of different developers into one piece of software
  • It collects all new code changes and "builds" a full working application out of it
  • It then runs all our tests automatically for you
  • It will tell you if any tests fail

Continuous Delivery(CD)

  • It automates all of the steps we talked about before
  • If all tests pass, it can push a new release of your software to an artifact store

Continuous Deployment

  • It automates all of the steps we talked about before
  • It automatically deploys the new release to a target environment

Example Workflow

  • A Developer wants to work on a new feature
  • He downloads a copy of the latest version to his machine
  • He adds the code for the new feature and marks it as a new version
  • He uploads his version back to the Version Control
  • No overwrites occur, the system merges changes in a smart way

"Ever tried to simultaneously work on a Word Doc? Then you know why Version Control is a smart idea!"

Shared Version Control

Shared Version Control is the management of changes to documents, computer programs, large web sites, and other collections of information. In Software Development it is used to track changes and to enable multiple developers to work on the same code.

One very popular shared version control system is Git

Git Website

  • Git was initially designed and developed by Linus Torvalds (inventor of Linux) in 2005
  • It has since become the most widely adopted version control system for software development
  • Git is a Shared Version Control System with an emphasis on speed and data integrity
  • It supports distributed, non-linear workflows
  • This means that people can work simultaneously on different machines on the same code

How Git branches work

Continuous Integration Tools

A very popular continuous integration tool is Jenkins - An open source CI/CD tool

Jenkins Website

  • Provides continuous integration services for software development
  • It supports Git and many other systems
  • It is very extend-able

Example of a more complete system setup

Bringing together [infrastructure as a service/IaaS]({% post_url 2016-05-02-infrastructure-with-virtualization %}) like OpenStack, [configuration management/CM]({% post_url 2016-05-02-configuration-management %} ) like Chef, [advanced testing tools and development techniques]({% post_url 2016-05-02-advanced-testing-tools-and-development-techniques %}) like Cucumber and Test-Kitchen, as well as continuous integration/delivery will yield something depicted in the following illustration:

How Git works with other systems

  • Provision new virtual resources requested from OpenStack
  • Use Chef to configure the newly created resources to meet the desired behavior
  • Use Test-Kitchen to iterate on the Chef configuration code
  • Have all the code Git/Gitlab/Github
  • Automate the continuous integration with Jenkins and verify each and every change.
Go Back explore our courses

We are here for you

You are interested in our courses or you simply have a question that needs answering? You can contact us at anytime! We will do our best to answer all your questions.

Contact us