Background: How the Continuous Integration Process Works

    Today we turn to the history of the term, discuss the difficulties of implementing CI and provide some popular tools to help you work with it. / Flickr / Altug Karakoc / CC BY / Photo changed




    Term


    Continuous Integration - An approach to application development, involving frequent assembly of the project and code testing.

    The goal is to make the integration process predictable and detect potential bugs and errors at an early stage so that there is more time to fix them.

    The term Continuous Integration first appeared in 1991. It was introduced in the use of language UML founder Grady Booch (Grady Booch). The engineer introduced the CI concept as part of his own development practice - the Butch method . It implied incremental refinement of architecture in the design of object-oriented systems. Grady did not describe any requirements for continuous integration. But later in his book "Object-Oriented Analysis and Design with Applications "" he said that the task of the methodology is to accelerate the release of “internal releases”.

    History


    In 1996, CI was adopted by the creators of the Extreme Programming Methodology (XP) - Kent Beck and Ron Jeffries . Continuous integration has become one of the twelve key principles of their approach. The founders of XP clarified the requirements for the CI methodology and noted the need to assemble the project several times a day.

    In the early 2000s, Martin Fowler, one of the founders of Agile Alliance, began to promote the continuous integration methodology . His experiments with CI led to the first software tool in the industry - CruiseControl. The utility was created by a colleague of Martin - Matthew Fommel (Matthew Foemmel).
    The build cycle in the tool is implemented as a daemon, periodically checking the version control system for changes in the code base. The solution can be downloaded today - it is distributed under a BSD-like license.
    With the advent of software for CI, more and more companies began to adopt the practice. According to a Forrester study [p. 5 of the report ], in 2009, 86% of the fifty technology companies surveyed used or implemented CI methods.

    Today, Continuous Integration is practiced by organizations from a wide range of industries. In 2018, a large cloud provider conducted a survey among IT specialists of companies from the services, education and finance sectors. Of the six thousand respondents, 58% said they use CI tools and principles in their work.

    How it works


    The basis of continuous integration is two tools - a version control system and a CI server. The latter can be either a physical device or a virtual machine in a cloud environment. Developers upload new code once or several times a day. The CI server automatically copies it with all the dependencies and performs the assembly. After - launches integration and unit tests. If the tests succeed, the CI system deploys the code.

    The general process diagram can be represented as follows:



    The CI methodology presents a number of requirements for developers:

    • Fix problems immediately. This principle came to CI from extreme programming. Bug fixes are a top priority for developers.
    • Automate processes. Developers and managers should constantly look for bottlenecks in the integration process and eliminate them. For example, testing is often the “bottleneck” of integration .
    • Build as often as possible. Once a day to synchronize team work.

    Implementation difficulties


    The first problem is high operating costs. Even if a company uses open CI tools (which we will talk about later), it will still have to spend money on supporting the infrastructure. However, cloud technology may be the solution.

    They simplify the assembly of multiscale computer configurations. Plus, companies pay only for the resources used, which helps to save on infrastructure.

    According to surveys [p . 14 of the article ], continuous integration increases the burden on company employees (at least for the first time). They have to learn new tools, and colleagues do not always help with training. Therefore, you have to deal with new frameworks and services on the go.

    The third difficulty is problems with automation. It is faced by organizations with a large amount of legacy code that is not covered by automated tests. This leads to the fact that the code is simply rewritten before the full implementation of CI.


    / Flickr / theilr / CC BY-SA

    Who uses


    One of the first advantages of the methodology was appreciated by IT giants. Google has been using continuous integration since the mid-2000s. CI implemented to solve the problem with delays in the search engine. Continuous integration has helped to quickly identify and troubleshoot issues. Now CI is used by all departments of the IT giant.

    Continuous integration also helps small companies, and CI tools are also used by financial and medical organizations. At Morningstar, for example, continuous integration services helped patch vulnerabilities 70% faster. And the Philips Healthcare medical platform was able to double the speed of testing updates.

    Instruments


    Here are some popular tools for CI:

    • Jenkins is one of the most popular CI systems. It supports more than a thousand plugins for integration with various VCS, cloud platforms and other services. We use Jenkins in 1cloud too: the tool is included in our DevOps system . He regularly checks the Git branch for testing.
    • Buildbot is a python framework for writing your own continuous integration processes. The initial setup of the tool is quite complicated, but this is offset by the wide possibilities of customization. Among the advantages of the framework, users distinguish its low resource intensity.
    • Concourse CI is a server from Pivotal that uses Docker containers. Concourse CI integrates with any tools and version control systems. The developers note that the system is suitable for work in companies of any size.
    • Gitlab CI is a tool built into the GitLab version control system. The service runs in the cloud and uses YAML files for configuration. Like Concourse, Gitlab CI uses Docker containers that help isolate different processes from each other.
    • Codeship is a cloud-based CI server that works with GitHub, GitLab, and BitBucket. The platform does not require a long initial setup - standard predefined CI processes are available in Codeship. For small (up to 100 builds per month) and open source projects, Codeship is available for free.

    Materials from our corporate blog:


    Also popular now: