Continuous integration lets us automate the software validation process so we can confidently make last-minute changes and get instant feedback when we’re introducing defects into the system.

Integrate Continuously

Integrate Frequently

You want to create a build system that’s so easy to use that it’s invisible to the developers on the team. It should be able to be invoked with a single click and should automatically build, test, and validate new code that’s added to the system. Teams that are first adopting continuous integration sometimes ask …

Read More
Integrate Continuously

Version Everything!

I’ve come across a few teams in my career who have unstable build and test environments. When they develop a feature and test it on their test servers everything’s fine, but as soon as they move the code into production bugs that didn’t show up before begin to manifest. I had one client whose system …

Read More
Integrate Continuously

One-Click Builds

We want to make invoking the build as simple as possible. So simple in fact, that it becomes a non-event that’s nearly invisible to us. The build should be accessible from the desktop or in the IDE. It should require only a single click to invoke. A local build should be invoked first, compiling only those …

Read More
Integrate Continuously

The Heartbeat of a Project

For me, software agility is best summed up in the first principle from the Agile Manifesto, which talks about continuous delivery of valuable software. Agile software development is supposed to be a flow that doesn’t conform to prescribed phases. Instead, it breaks projects down into features and tasks. We build the features that are most …

Read More
Integrate Continuously

Automate Deployment

Different people have different ideas of what it means to be Agile. For some, Agile means doing standup meetings and two-week iterations. For others,it means doing all the practices from Scrum, Lean, and Extreme Programming. For me, what it means to be Agile comes right out of the Agile Manifesto, which says: “Our highest priority …

Read More
Integrate Continuously

Seven Strategies for Continuous Delivery

Continuous delivery is the single most important step in agility. Regardless of whether you do big releases or not you should always build software incrementally so it is always in a releasable state. Why? Because the only way to know if code will work in a system is to test it in the system. This …

Read More
Integrate Continuously

Seven Strategies for Agile Infrastructure

The first step in achieving agility and technical excellence is to set up an infrastructure to support it. The infrastructure we will discuss here, an automated build server, is one of the most important aspects of agility because we can only consider a story as “done” when it is fully integrated into the build. Here …

Read More
Integrate Continuously

Integrate Early and Often

A story, use case, or requirement is not done until it is integrated into the rest of the build system. “Well, it works on my machine,” is not a statement we want to hear on an Agile project. A story that is not integrated into the build is not complete and worth zero story points …

Read More