Information Technology Reference
In-Depth Information
Run Manual Integration Builds
An alternative or complementary technique to using a CI server is to
perform a manual integration. A manual integration build is a prac-
tice where only one person at a time can commit changes to the repos-
itory. It utilizes a queue in which developers manually run an
integration build on a separate integration machine to ensure the build
always stays in the green.
By running a CI server, your team is performing an automated
(nonsequential) integration build that can be run at any time. As dis-
cussed earlier in the topic, a CI server can poll for changes to the
repository every few minutes or so. Once it finds a change, it kicks off
an automated build. The problem with automated integrations is that
they can lead to broken builds. In its current practice, CI is very reac-
tionary. Often you don't discover the problem until it has been com-
mitted to the repository—which means that other developers will get
broken code when they check out from the repository. Moreover, a
broken build can disrupt the flow of developers' work.
To prevent broken code from ever entering the repository, some
teams utilize these manual, sequential integrations. Some teams will
use a physical token (I observed one team that used the Staples Easy
button) or a simple file lock to signify who is integrating—since only
one person (or pair) is integrating at a time.
Manual integration can be effective in preventing broken builds,
but it doesn't scale particularly well for larger teams. Furthermore, a
side effect of this form of integration is that team members may stack
up many changes they make for a larger and less frequent integration,
rather than smaller and more frequent ones that maximize quality. In
addition, if you are exclusively manually integrating your build, there
is no guarantee the practice will be followed. Using a CI server pro-
vides a safety net to know the integration will occur. Some groups will
use a combination of sequential and automated integrations. For
instance, a team that exclusively uses automated CI can combine the
approach of separate private builds by each developer to prevent bro-
ken integration builds. Much of this is personal preference. We clearly
lean toward automated integrations, but there definitely are unique bene-
fits of a manual, sequential integration to keep the build in the green.
 
Search WWH ::




Custom Search