Continuous integration server

Last modified by Asiri Rathnayake on 2022/02/25 09:25

Mentor(s)
Estimated workload

3 Months

Details

Overview

This proposal is to develop an XWiki based continuous integration server. The main focus is to execute long-running (external) build / test jobs and report tests results. We are interested in finding regressions.

Preferably the entire application will be developed using the XWiki data model + scripting API (with a little bit of Java, may be). Groovy provides a very advanced API for managing external processes [1], which makes it an ideal candidate for this job.

For an example use-case, suppose we need to continuously build and test the Apache httpd code-base every 3 hours.  So, our XWiki application should allow its user to define a job for this task. He may have to write some custom groovy code to glue-in Apache httpd specific details (like what command to execute for source checkout etc.) but the application should automate as much as possible (like the results UI, scheduling etc.)

Some technical details

The application will allow users to define a sequence of phases:

  1. A source checkout phase, it should be possible to define a working directory and the shell commands for the checkout
  2. A build phase (execute shell commands for building the project: make, ant, maven etc.)
  3. A test phase (execute shell commands for triggering the test suites)
  4. A results generation phase (collect results from 3 above)

Finally the Results UI allows to compare two runs, highlight regressions (extension: drill down regressions to particular commits). For each of the 4 phases above, it should be possible to to monitor the progress of the job from the UI (progress indicator + live log facility).

Scope for GSoC

As part of the application process, the student will have to come-up with a design for the application. This means getting familiar with the XWiki data-model / scripting guide [3, 4] (suggestion: start with the FAQ application [5]) and discussing any technical issues on the mailing list. The challenge of this project is to make it easy for users to plug-in various projects and test suites.

By end of the GSoC project we should have XWiki + 2 (at least) other opensource projects building and testing overnight. There should also be a guide on how to define new jobs.

References

[1] http://groovy.codehaus.org/Process+Management

[2] http://groovy.codehaus.org/api/org/codehaus/groovy/runtime/ProcessGroovyMethods.html

[3] http://platform.xwiki.org/xwiki/bin/view/DevGuide/DataModel

[4] http://platform.xwiki.org/xwiki/bin/view/DevGuide/Scripting

[5] http://platform.xwiki.org/xwiki/bin/view/DevGuide/FAQTutorialManual

Developer profile

Some understanding of web-application development. Groovy / XWiki experience is a plus, but can be learnt on the job.

Active
Yes
Year

2015

Status

Proposed

Tags:
   

Get Connected