Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. This article is a quick overview of Continuous Integration summarizing the technique and its current usage. Martin Fowler about continuous integration

Things get clearer in my mind...I will use a set of Open Sources software to reach this ambitious goal.


Maintain a Single Source Repository.

Either Subversion running locally on windows/Linux, but I will stay with at the beginning

Automate the Build

  • I am currently evaluation Maven for PHP but already have ANT script to build components and plugin for Joomla 1.5 (they are not generic enough at the moment)

Make Your Build Self-Testing

  • PHP UNIT tests if available with be run at this stage using PHP command line.
  • Selenium to automate components testing across many platforms, as it runs in many browsers and operating systems, and can be controlled by many programming languages and testing frameworks.
  • Some standard utilities to perform standard Joomla! processes: login, logout for Apache ANT or Selenium
  • I will develop either a ANT plugin or a set of Selenium test cases for deploying and removing
    • component: install, publish, remove
    • plugin: install, publish, remove
  • All these utilities will be available under GPL v3 and as such free to reuse, and improve.

Everyone Commits Every Day

  • This is reserved to developer having a account and part of the development team.

Every Commit Should Build the Mainline on an Integration Machine

I will use TeamCity continuous build server as it is free for personal use (limited to 20 concurrent build), run on Windows and Linux but require a java VM to run (may not be wanted in a PHP environment). Anyway with ANT, it will be possible to use another build server like Cruise Control or PHP Under Control.

Keep the Build Fast

That is an objective :-)

Test in a Clone of the Production Environment

Joomla! Build farm

  • I can imagine a set of Joomla instances, ideally 5 of each version, aka Joomla! 1.5.3 to Joomla! 1.5.8 and Joomla! 1.0.10 to 1.0.15
  • Joomla instances will be recreated at build time (files and databases), that mean Joomla! will get newly installed and removed in case of successful build
  • All Joomla! instances will be running with XAMPP, ideally on port not available to the outside world for security reasons

Make it Easy for Anyone to Get the Latest Executable

Successful build (Artifacts) are only available if build is successful. Team City provide this with less effort (configuration)

Everyone can see what's happening

  • A guest account will be available or a free public area with limited access to see the result of builds.
  • RSS feeds, emails and Instant messaging (Jabber) out of the box for end users or developers!

Automate Deployment

That will be, auto publish to some demo site in a configurable way. At the moment, at and for me :-)

Final words

It seem that nobody is providing such a package as I am after only one day at the top of search results in Google "continuous build joomla"

You might like also

Announcing Module nimbus for all users of Phil Taylor Joomla! tags
I am a very happy user of Joomla! tags from Phil Taylor. My only complaints is that it is still not part of #Joomla!® core. Joomla!® Tags is a #Joomla Extension for adding tags to #Joomla!® Content. Use Joomla Tags to allow content classification by keywords (Tags), can also be used to create virtual categories to add content into, over coming #Joomla!® single section/category structure read more here…         …
3760 Days ago
Content plugin for Joomla! 1.5 to embed Freemind Mind Map in your articles
I offer You now a new plug-in for #Joomla! 1.5 that allow you to display any Freemind Mind Map using a fancy Flash applet in article content. You can put anywhere in your article the following keywords This #Joomla! plugin use Freemind Flash Browser:   You can see the flash browser in action (full screen) here …
3760 Days ago
Joomtwitter a twitter module for Joomla!
Twitter is a free service that lets you keep in touch with people through the exchange of quick, frequent answers to one simple question: What are you doing? A very simple module with a great output layout that require flash 9 for properly operations. I use it on my site (at the bottom) it output valid XHTML 1.0 Strict Since it is a #Joomla! module, it is easily customizable and can be place anywhere in your #Joomla! template It allow …
3912 Days ago
No Thumbnail was found
As I found no better tutorial on Internet, here is a very very short how to add Google analytics to Atlassian JIRA Edit the file atlassian-jira/includes/decorators/stylesheettag.jsp This file is responsible for adding CSS links in html and is included in all pages. Now put the usual code you get after creating a new analytics profile <script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> try catch(err) </script> …
4033 Days ago
New JIRA Bug Tracking system for all my Joomla! components!
I am very proud to announce that I got granted a JIRA and Bamboo Open Source license! Extract form their site: Open Source Atlassian supports and believes in the Open Source movement - JIRA utilises a number of good Open Source components, and Atlassian developers are committers on a large number of Open Source projects. To give back to the open source community (and hopefully improve the quality of those projects!), JIRA is free for any Open Source project to …
4035 Days ago
Joomla development, correct usage of subversion
I am developing for #Joomla! now since the beginning but I was always disturbed by the way people are using the code repository of #Joomla! ( I am doing professional java development but was never able to reproduce the way I am working nor really did take the time to really do it correctly (help by the fact that I was developing always alone). Things changes... and now I am part of the effort of bringing #JoomlaComment to run natively …
4291 Days ago
Converting your component from Joomla 1.0.8 to Joomla 1.1.X
I am currently in the process of moving all my open source project (7!) in CVS Head to the latest #Joomla API 1.1.X. I've tried to summarize in the following table some conversion rulesIn #Joomla 1.0.Xhas to be converted in #Joomla 1.1.XWheremosMenuBar::startTable();JMenuBar::startTable();PHP codedefined('_VALID_MOS') or die('Direct Access to this location is not allowed.');defined( '_JEXEC' ) or die( 'Restricted access' );PHP coderequire_once( $mainframe->getPath( 'toolbar_html' ) );require_once( JApplicationHelper::getPath( 'toolbar_html' ) );PHP code<?xml version="1.0" encoding="iso-8859-1"?><mosinstall type="component" version="1.0.0">....<?xml version="1.0" encoding="iso-8859-1"?><install type="component" version="1.0.0">....Installer XML fileMore to …
5088 Days ago
Access to Joomla CVS forge using eclipse
I show You here (with screenshots) How to access #Joomla Forge CVS system using the standard Eclipse CVS client. Click Read more ! …
5089 Days ago