Draco.NET
I choose Draco.NET because it is so easy to install and simple to use. Although CruiseControl.NET does offer nice features for a large development team, I wanted to eliminate any complexity to emphasize the concepts of a complete case study. Listing 9.4 is the configuration for Draco.NET to build ASpell.NET. Figure 9-4 shows the email notification sent from the initial import's triggering of the build.
Example 9.4. Draco.NET's Configuration
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="draco" type="Chive.Draco.Config.ConfigurationSection, Draco"/> </configSections> <system.diagnostics> <switches> <add name="TraceLevelSwitch" value="4"/> </switches> <trace autoflush="true" indentsize="4"> <listeners> <remove name="Default"/> </listeners> </trace> </system.diagnostics> <system.runtime.remoting> <application> <service> <wellknown mode="Singleton" objectUri="Draco" type="Chive .Draco.DracoRemote, Draco"/> </service> <channels> <channel ref="tcp" port="8086"/> </channels> </application> </system.runtime.remoting> <draco xmlns="http://www.chive.com/draco"> <pollperiod>60</pollperiod> <quietperiod>60</quietperiod> <mailserver>mail.securityint.com</mailserver> <fromaddress>brian.nantz@somwhere.com</fromaddress> <builds> <build> <name>aspell-net</name> <pollperiod>10</pollperiod> <quietperiod>30</quietperiod> <notification> <email> <recipient>brian.nantz@somewhere.com</recipient> </email> <file> <dir>C:\book\BuildOutput</dir> </file> </notification> <nant> <buildfile>build\master.build</buildfile> </nant> <svn> <url>file:///C:/book/svnrepository</url> </svn> <ignorechanges> <ignore comment="autobuild"/> </ignorechanges> </build> </builds> </draco> </configuration>
Figure 9-4 Draco.NET's Email Notification.
Again, in Listing 9.4, all the comments have been removed. These comments more than point you in the right direction with helpful examples. For example, there is a section for each source control that it supports (i.e., Subversion, Visual Source Safe, etc.), and you just have to uncomment it and changed the values (like username, paths, passwords) to fit your environment. By just uncommenting the proper notification XML node, you can now receive build results in multiple formats. All of the supported SCMs are also very configurable and well documented. Notice that you can ignore certain checkins to SCM (if you are triggering builds off of checkins and are not scheduled). You can also potentially monitor multiple source repositories. In Listing 9.4, only the svn XML tag is used to monitor a single Subversion repository.
Next we will add a new example client for greater stressing of the component.