Tuleap continuous integration infrastructure

Hi everybody,

The tuleap integrators present you here below the continuous integration infrastrucutre deployed for the Tuleap validation.

All of this begin with a new contribution made by a developper. When the contribution is ready, the developper pushes it in review through Gerrit. A trigger is defined in Tuleap's Gerrit. When a new contribution comes, Gerrit talks to Jenkins and says to it to launch all of the integration jobs.

Gerrit comment Jenkins

Tuleap's Jenkins server is hosted on Rackspace. We have configured Jenkins in order to have distributed builds. This reduces considerably the time needed to run our three continuous integration jobs and increases the parallelization of our jobs. To do this technically, we use several Jenkins plugins like jCloud.

There are 3 Tuleap continous integration jobs:

  1. PHP 5.1 test suite,
  2. PHP 5.3 test suite,
  3. REST test suite.

The master job receives the Gerrit message. We have 3 continous integration jobs, so the master will create or reuse one agent machine per job. The master creates an agent (which means that Jenkins, with the help of jCloud, will spawn a new machine on rackspace with a functionnal Jenkins instance) if it does not exist, and reuses one if the job was previously launched in the last 30 minutes.

Each agent will return its test suite result. The master retreives all these results and generates a global result:

  • Passed if all salves' status is passed,
  • Fail if one of the salves' status is failed.

To finish, Jenkins will provide to Gerrit this global result:

  • If it's passed, a Tuleap contributor have to validate the contribution before mergging it into Tuleap source-code,
  • If it's failed, Gerrit unvalidates the contribution because this contribution brakes Tuleap. The developper has to correct it.

Notes 

All of the tools used by the Tuleap continous integration process are Free and Open Source Softwares.

  1. FOSS: http://en.wikipedia.org/wiki/Free_and_open-source_software
  2. Gerrit: https://code.google.com/p/gerrit/
  3. Jenkins: http://jenkins-ci.org/
  4. Jcloud: https://wiki.jenkins-ci.org/display/JENKINS/JClouds+Plugin

Share this post

Leave a comment

To prevent automated submissions please leave this field empty.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
Websites located at tuleap.org and other tuleap.org subdomains need to store and access cookies on your device. We need your acceptance. Get more information. Yes, I agree No, I disagree