Daily Build
Run the compiler and linker to build the executables on a daily
basis
The basic steps are:
- Get latest version of the source code and build scripts from the
Version Control System
- Rebuild everything
- Run smoke tests on generated executables
- Post results to central location
The daily build has mostly been publisized by people that at
some point have been working with Microsoft. Notorious examples
include Jim McCarthy, Steve McConnell and
Joel
Spolsky.
As you can see from the DailyBuild Wiki page, XP
has made the emphasis shift to Continuous
Integration.
References
-
Windows. A Software Engineering Odyssey.
- Mark Lucovsky's presentation describing the history of Windows NT
as seen from inside Microsoft. Particularly interesting for his
description of the evolution of the internal build process. Also in
html or
text format.
- Quest
for reliability drives Windows 2000 Build Labs.
- By Bruce
Hoard.
- DailyBuild
- on the c2
wiki
-
- Continuous
Integration by Martin Fowler and Matthew Foemmel
- An important part of any software development process is getting
reliable builds of the software. Despite it's importance, we are
often surprised when this isn't done. We stress a fully automated
and reproducible build, including testing, that runs many times a
day. This allows each developer to integrate daily thus reducing
integration problems.
Tools
- CruiseControl
- CruiseControl is a framework for a continuous build process. It
includes, but is not limited to, plugins for email notification,
Ant, and various source control tools. A web interface is provided
to view the details of the current and previous builds. See the Wiki page for more
details.
- Continuous Integration
- but using VC++/COM
- Apache Ant
- A Java-based build tool for those who don't like make. This
article show how to use Ant and JUnit to setup a daily build
and test process.
- Ant's
cpptasks
- Ant is quite Java-centric. But there are some Ant tasks available
to support C++ builds.
- TinderBox
- See the c2 wiki
page. From the TinderBox web page:
Essentially, Tinderbox is a detective tool. It allows
you to see what is happening in the source tree. It shows you who
checked in what (by asking Bonsai); what platforms have built
successfully; what platforms are broken and exactly how they are
broken (the build logs); and the state of the files that made up
the build (cvsblame) so you can figure out who broke the build, so
you can do the most important thing, hold them accountable for
their actions.
-
DevelopMentor's Gen<X>.
- Simple build automation based on an XML file which describes what
to build, and a set of templates that generate the nightly build
and developer build batch files.
Some commercial tools
Related Stuff
Interesting
discussion on having only one codeline.
Coping
mechanism