Continuous deployment and continuous delivery: Two trends that share their beginning in continuous integration. Regardless of how your organization is evolving beyond continuous integration, the CI tool you use plays an important part in your success.
WhatIs.com defines continuous integration as “a software engineering practice in which isolated changes are immediately tested and reported on when they are added to a larger code base.”
“The premise of CI is to get feedback as early as possible because the earlier you get feedback, the less things cost to fix,” says Sean Kenefick, Research Director, Application Platform Strategies, Gartner Inc. In addition to saving organizations money by catching problems earlier in the software development process, CI tools provide overall visibility into projects. “Anyone can glance at a CI dashboard and basically see the health of the project,” says Kenefick.
Without the early feedback that CI provides, organizations suffer more than additional costs. “If you don’t get the early feedback, you’ll be fixing things late. You’ll have integration issues where people check in code and it breaks other people’s code,” says Kenefick. “You’ll have horrible, difficult merges because if you don’t do CI, you’re putting merges off. Merging code three weeks after writing it is much different than merging it right after you write it.”
Trends in continuous integration
Experts and analysts agree that continuous integration is paving the way for other trends that are quickly gaining momentum; namely, continuous deployment and continuous delivery. Both trends encompass CI and seek to address what happens after changes go into the build loop.
“The biggest evolution that we’re seeing is people moving from CI to what they’re calling continuous deployment,” says Jeffrey Hammond, Principal Analyst, Forrester. “Once changes are made, they are integrating and building them as soon as possible, at least on a daily basis. . . With continuous integration changes go immediately into the build loop and you end up with lots of builds. What do you do with them? Continuous deployment addresses that,” he says.
But, according to Paul Duvall, author of Continuous Integration: Improving Software Quality and Reducing Risk,continuous deployment can go a step further. “Simply said, continuous deployment implies that you’re deploying your software to some environment, but it doesn’t mean that you’re delivering software to users,” he explains. “Delivering software to users on a frequent basis is what continuous delivery is all about. Continuous deployment could be continually delivering software to just your testing environments. This is excellent, but you haven’t necessarily gotten it to production yet. Continuous delivery implies continuous deployment, while continuous deployment does not imply continuous delivery.”
Whether your organization is focused on continuous deployment or continuous delivery, a CI tool is an important piece of the puzzle. “CI tools help to facilitate not only building, testing and deploying software, but the entire release process,” says Duvall.
Popular tools for continuous integration
According to Kenefick, contextual Gartner research shows that “folks are no longer going to big bang tools or methodology. They’re letting individual groups choose their own tools and practices to see what works. The ones that work are trickling out.” Kenefick acknowledges that allowing groups to use the tool of their choosing can create challenges when it comes to collaboration. However, he says, “Enterprises are finding success with that approach. Things are getting better because we’re letting people experiment.”
Organizations wishing to experiment with alternate CI tools have plenty of options. Popular open source tools include Hudson, Jenkins (the fork of Hudson), CruiseControl and CruiseControl.NET. Commercial tools include ThoughtWorks’ Go, Urbancode’s Anthill Pro, Jetbrains’ Team City and Microsoft’s Team Foundation Server.
Most of the players in the CI market are pretty well established and the tools provide similar services. “They don’t greatly differ, even the open source ones,” says Kenefick. “The more expensive tools aren’t necessarily better than open source and low cost tools. You just need to look at them and understand what they can do.”
Continuous integration tool capabilities
A common feature among CI tools is strong support for software configuration management (SCM) tools, says Kenefick. To this end, CI tools have plug-in systems that allow them to integrate with SCM tools as well as add functionality. “If you want to create a test environment on the fly or a virtualized system to run tests on, a plug-in will allow you to write code for that,” Kenefick explains.
Other features to consider when evaluating CI tools cited by the experts we interviewed: visualization of the release process, a customizable, easy-to-read dashboard, trending, tool integration (issue management, peer review, testing, etc.), and the ability to create a process workflow.
Ultimately, though, the CI tool that you choose should integrate with your ALM system. “The idea is that you should be looking for best of breed and what will meet your needs, and then make sure it can integrate with your system,” says Kenefick. “If your ALM doesn’t allow these integrations, you’ll be stuck with the lowest common denominator.”
For a comprehensive resource on continuous integration, see Continuous integration: Achieving speed and quality in release management.
Why you should look at containers for efficient CI and CD