+++
date = "2018-02-26T11:00:13+01:00"
title = "Continuous Integration"
author = "Lars Bilke"
weight = 1013

[menu]
  [menu.devguide]
    parent = "development-workflows"
+++

## Introduction

> [Continuous Integration](https://en.wikipedia.org/wiki/Continuous_integration) (short **CI**) is the practice of merging all developer working copies to a shared mainline several times a day.

So for every proposed change to the source code the following is done automatically:

- Compilation of the changed code merged with the official source code is tested on a variety of platforms (Windows, Linux, Mac OS, different compilers)
- A comprehensive [test suite](TODO: link unit testing) checks validity of the proposed changes
- Additional checks regarding code formatting and documentation help in maintaining a good software quality and structure

After the system is done with all these tasks the developer can view build reports highlighting occurred errors and problems. We are using [Jenkins](TODO: link) as our CI system.

## CI on OGS

All of this automatically kicks in when you open a [Pull Request](../code-reviews) on GitHub. You will notice a checks block at the end of the pull request page:

![](../GH_CI_screenshot.png)

Click on the *Details* link to find out the reason for a failed check. If you add more commits to this pull request all checks are run again.

# Enable CI on your fork

You can have the CI system testing all your branches in your fork of OGS even before creating a pull request. Just contact us and provide your GitHub user name.