---
title: "Continuous Integration"
description: "By building and testing software after every change, a Continuous Integration System supports our Software Team to build the best possible software."
url: "https://qameta.com/continuous-integration/"
---

# Continuous Integration

As software change all time, modern software development needs a system, which
checks these changes for:

* can be built?
* can be started?
* is working as expected
* is secure

A Continuous Integration System (CI) is an essential tool in our workflow and
can:

* Setup a system similar to production
* Builds the whole project by using the code from a Git repository
* Run the whole test suite
* Maybe run additional stuff like security checks or license checks

But it can do even more.

## Update Management

A Continuous Integration System may help or even handle updates and especially
security updates of third-party components semi or full automatically.

* Prepare an update in a separate environment
* Collection information according to changes and prepare for developer
* Handling open updates, which were updated by a newer version

## Upgrade Management

Hardware, Operating Systems, Frameworks, Programming Languages, and many other
things change over time. Checking them manually is a repetitive and error-prone
task. These tasks can be checked through a CI System, without directly bothering
the core software team. These tasks are:

* Build and run the project on relevant hardware
* Build and run the software on relevant operating systems and versions
* Build and run the software on a different version of the programming language
* Build and run the software on different framework versions, the project relies on

As you can see, these combinations may lead to dozens and in some projects
hundreds of different combinations, which must be checked. A CI System can
handle these through a corresponding setup and without user interactions on
every software change.

## Additional Tasks

A Continuous Integration System can run almost any important task you may
encounter like:

* Check missing translations
* Security Audits
* Code Quality Audits
* Code Style Audits

A very important part is the automation of repeating tasks, which rise the
quality and reliability of a software project.

## Summary

Continuous Integration can handle a lot of different tasks - even for a
one-person software team. In the long run, you will save a lot of resources,
time and money.

Removing repetitive, boring, and error prone work from your development team
increases happiness and pace of your project.
