Information Technology Reference
In-Depth Information
builds. On the other hand, if you are just trying out a couple of changes
and do not intend to commit anything, you may choose to run a lighter-
weight build that may only perform a compile and then execute a few
unit tests.
“Ant It Great?”
Many of the examples used in this topic use the Ant and NAnt
build tools. This is because of their wide use and recognition
throughout the development community. I expect (or hope) that
new build tools that provide support for dependencies and pro-
gramming constructs become more widely accepted in the com-
ing years.
There are a variety of build tools from which to choose. Some of
the most popular build tools include Ant for Java and NAnt for .NET.
Using a scripting tool designed specifically for building software,
instead of a custom set of shell or batch scripts, is the most effective
manner for developing a consistent, repeatable build solution.
Remember, builds should be a push-button proposition. When you
press the Integrate button, as shown in Figure 4-1, the assembly line
process runs and produces working software. At times, organizations
are unable to adopt CI because they are unable to truly automate their
builds. In some cases, this inability is correlated to tightly coupled
dependencies, such as third-party libraries and hard-coded references.
I once saw a project with some examples of this, where:
• There were dependencies on shared drives, and parts of the build
script were hard-coded for the K:\ drive (which was a problem
since there wasn't a “K” drive on the developer's machine)
• And there were hard-coded references to the locations (C:\ drive)
of certain tools that weren't residing on the developer's machine
Both of these examples not only make the script inoperable on a
non-Windows machine, but they also make it inoperable on the devel-
oper's machine because the developer may not have mapped the drives
or those directories on the C:\ drive. Attempting to run a script like this
will only lead to frustration, as dependency after dependency is unable
to be resolved, resulting in a failed build.
Search WWH ::




Custom Search