The system of automatic software builds and tests can help developers make better apps with less effort
Continuous integration, in which software builds are automated and tested as code flows in, is becoming more prominent lately thanks to several trends: economics, agile software development, open source options, and distributed, complex projects.
With continuous integration, software is put together quicker and tests are done faster, says developer Kohsuke Kawaguchi, who started the open source Hudson project in 2004 and moved on to the Jenkins fork last year after a dispute with Oracle. Code is constantly being integrated and tested, and farms of computers can become involved. “It becomes easier for developers to produce high-quality software,” Kawaguchi says. The second benefit, he adds, is it “makes the project more transparent and more visible.” This is beneficial for managers and testers who do not have the level of insight into the code as developers, he says.
[ After the spinout of Hudson and OpenOffice, does open source stand a chance at Oracle? InfoWorld’s Paul Krill investigates. | Get the latest insights and news on application development with the Developer World newsletter. ]
Continuous integration systems trigger build systems like Apache Maven to start creating software. “It monitors your version control system, waiting for anybody to check in new code. As soon as it sees that a check-in has occurred, it grabs everything and builds it and tests it and then sends out via email or various other notification mechanisms the details of whether it worked or not,” says Paul Julius, a co-founder of the CruiseControl open source continuous integration system that automates the process and offers rapid feedback, he says. Julius estimates that CruiseControl has millions of users.
Economics drive continuous integration
While the concept of continuous integration has been around for several years (CruiseControl debuted in 2001), officials and experts in the software industry see continuous integration becoming a more vital component in software development shops in the current business environment. Kawaguchi cites economics as a key driver. The price of computing is getting cheaper and cheaper, but the price of people remains more or less constant, he says.
Continuous integration, like IDEs before it, thus tries to shift the effort from developers to software, to reduce overall costs. “When I think of [continuous integration] servers, the main role that it achieves is to effectively harness the computing power in the lab or in the data center to make developers productive without making them do more work,” Kawaguchi says.
The recent adoption of agile software development, in which software is developed in short iterations rather than mapped out months in advance, is a perfect fit for continuous integration, says Mike Milinkovich, executive director of the Eclipse Foundation, the new proprietor of Hudson. Continuous integration and the ability to share work across different development teams in agile projects “is an absolute must,” says Milinkovich. “Agile implies you are doing things rapidly, and a big part of this is constantly pulling in the work of developers.”
“People are finding the value of more agile practices and the value of integrating on regular basis, bringing the changes together,” says John Wiegand, a distinguished engineer and chief architect at IBM Rational.