|
CI Factory was born out of a desire to quit writing unique build
scripts for every new project. There are some papers that talk about
this in detail:
The goal of the project is to provide a standard workspace, that
when conformed to CI Factory will be able to build with little to no
customization. The workspace described in A Recipe for Build Maintainability and Reusability
is utilized by CI Factory. CI Factory uses the industry standard tools
to accomplish the goal. CCNET and NAnt are the core products that are
used. A workspace produced by CI Factory is self-contained, it has its
own CCNET server, CCNET dashboard, and copy of NAnt. This means that
there is nothing about CI Factory that prevents a host machine from
hosting more than one CI Factory produced workspace. Each workspace can
vary independently and experience downtime without disturbing others.
The main build script, similar sub main, does very little in the way of
visible functionality. It manages the high level control flow, setup,
and teardown. The functional work is performed by packages can by the
main build script. A Package can provide functionality to the build
through NAnt targets and build reports. A target script must adhere to
an interface, simply provide a setup and teardown target. A target
script will be accompanied by a properties script as well. The targets
provided are like functions and and the properties are like parameters.
Targets are designed to take full advantage of the standard workspace
and contribute to the standard. This situation allows the goal to be
achieved easily; for example building a .NET product. The workspace
defined requires that the Visual Studio solution file be placed in a
particular directory(C:\Projects\<projectname>\Current\Product)
and named in particular format(<projectname>.sln). This allows
for a script that will work for any project that follows the standard. This same pattern is used for things like executing unit tests, compiling installers, calculating metrics, profiling code coverage, etc: convention over configuration.
CI Factory is bundled with several packages, you can write your own too. To create a workspace
for your project you will need to select a set of packages that meet
your needs and provide a few pieces of information about your source control repository.
|