Continuous Integration (CI) Success Depends on Automation
Continuous delivery — the ability to ship new and awesome features, updates and patches to your customers more frequently — is key to getting ahead of the competition, and staying there. Getting to continuous delivery of quality code that actually works in production relies on continuous integration: a system for testing code incrementally and frequently. Continuous integration is both a toolchain and a discipline. It’s less about the specific tooling, though, and more about the practice of continually integrating changes so the system can catch errors and failures while they’re still small and manageable. Your continuous integration system is what gives your team enough confidence in its code to ship frequently. The continuous integration system is necessarily complex, spanning the development, test and staging environments. For the sysadmin, provisioning, configuring and maintaining these environments — and making sure they accurately reflect the production environment — can look like a Sisyphean task. Automation is the key to cutting this task down to size. Just as automation makes server provisioning and patch management easier and more reliable, it can enable you to help your development team deliver code faster.
Automating Continuous Integration Reduces RiskWhat scares people most about shipping code frequently is the risk of breaking things. And it’s a realistic fear: Most software is complex, often reaching into multiple parts of the organization. What looks like a small error at first can have far-reaching consequences. Let’s look at each dimension of complexity:
- Speed. Shipping fast scares people because it poses the risk of inadequate testing.
- Lots of changes to lots of pieces. Every change brings with it the risk of breaking something, and frequent changes that affect multiple things bring even more risk.
- Many people. Fast changes, and lots of them, are challenging enough with just one person or group involved. It gets even harder when multiple people are introducing changes, because every person has the opportunity to introduce error.
IT Operations: Stage Manager for Continuous IntegrationEvery system and sub-system in the continuous integration flow has to be monitored and kept consistent over multiple testing cycles — consistent not only to itself, but to every other piece, and to the production environment. Automation makes consistency much easier to achieve, and every piece of continuous integration can be automated:
- Building the dev and test environments
- Configuring each environment
- Maintaining correct configuration for each environment
- Remediating configuration drift
- Scaling up as needed
- Matthew Barr of Snap Interactive talks about bringing continuous integration tools and practices to Puppet code to manage automation of your infrastructure in a safe, reliable manner.
- How Puppet Labs leverages automated testing, continuous integration, continuous delivery and DevOps tools and practices to do effective testing with a small QA team.
- Creating a deployment pipeline at Australia's National Broadband Network, using continuous integration practices.