New Jenkins Cluster Improves the Timeliness and Consistency of Plone Testing
Jenkins (a fork of Oracle's Hudson project) is a continuous integration (CI) server. It has jobs added to it which have set configurations, it then downloads and builds code from different SVN links. It then checks for any errors that occur when running them against inbuilt tests and then reports those errors in a log. Jenkins makes it easier for developers to integrate changes to the project and make it easier for users to obtain a fresh build. The automated, continuous build increases both productivity and quality of the end product.
The jenkins.plone.org cluster is hosted and managed on a server level by Devaus Oy as a service to the Plone community. The Jenkins cluster currently consists of the master server (eight core) and a dual core slave with a windows server being added soon for Selenium testing. More slaves will be added to the cluster as needed to handle the load.
The Plone AI-Team (Admin Infrastructure) setup the server side part of the Jenkins cluster with the assistance of Eric Steele. The AI team continues to manage the OS side of the cluster (with advice from Eric) and responds to any server side alerts along with the Devaus Admin team if needed. Eric Steele was responsible for setting up the Jenkins part of the system in terms of the CI interface and managing the Jenkins settings and is currently in control of the process.
Eric Steele is enthusiastic about Jenkins and what it can accomplish for Plone. "I'd say that it makes it easier to catch regressions when they happen. We've been running tests nightly, but then you have to go through a whole day's worth of commits to figure out what change broke things. We can also run *more* tests, things like pyflakes/plylint runs to check style, zptlint to look for broken page templates, eventually, Selenium testing."
As a result of this setup, testing takes place 24 hours a day, seven days a week. Every single commit to SVN by every core Plone / Zope component is checked - allowing core devs to know immediately when something breaks. Issues are reported in Trac and the results of the builds and errors are automatically emailed by Jenkins to the developers lists.
Due to some access control issues usage has been restricted to an ask first basis. Anonymous viewing does allow everyone to see results and jobs being built / track errors via RSS or the GUI. In the next few weeks the AI-Team hopes to open the server up to all Plone core developers. This will allow developers to add their own Plone core related builds and tests. The AI-Team will expand the cluster as needed to support the increased testing load.
CI servers are essential for QA and aid in faster error discovery in modern systems. These features save time and trouble for developers and testers alike.
Calvin Hendryx-Parker, President of the Plone Foundation sees efforts like this one as the kind of things that continue to advance the work of the Plone Community. "Without the tireless efforts and contributions from groups like Devaus and the volunteers on the Admin Infrastructure team, projects like this could never happen. Adding CI to our tool belt solidifies the Plone Community's dedication to producing a quality product."