So i have decided to start writing a Sandcastle Plug-in for CruiseControl.NET.

Currently we are using the folowing block at work to build and publish help files
(thanks to: http://blog.maartenballiauw.be/post/2007/08/28/automatically-generate-sandcastle-documentation-using-cruisecontrol-net-or-vsts-team-build.aspx)

   1:  <exec>
   2:    <executable>C:\Program Files\EWSoftware\Sandcastle Help File Builder\SandcastleBuilderConsole.exe</executable>
   3:    <baseDirectory><base directory></baseDirectory>
   4:    <buildArgs><project file></buildArgs>
   5:    <buildTimeoutSeconds>10800</buildTimeoutSeconds>
   6:  </exec>
   7:   
   8:  <exec>
   9:    <executable>xcopy</executable>
  10:    <buildArgs>"base directory\Help" "C:\Inetpub\wwwroot\api" /E /Q /H /R /Y</buildArgs>
  11:    <buildTimeoutSeconds>3600</buildTimeoutSeconds> 
  12:  </exec>

 

Now this works well enough, but it does leave out a few desirable things. First of all whenever sandcastle completes a build, it reports where the actual output is stored, so we could avoid to statically define this in another task. Another thing is that it gives a pretty thorough report on missing comments ect. This could very well be used for something meaning full, even to fail the build if one was very strict.

So the very low requirement for my CCNet plug in starts with the two blocks above:

  • Build a Sandcastle Help File Builder project.
  • Copy the output to a desired directory.

Additional requirements:

  • Parse Sandcastle Help File Builder log to something that can be displayed in CCNet
  • Summary for the build (number of missing references, documentations)
  • Pass/Fail levels on missing documentation
  • Detailed report over missing documentations (Browse able by components ect.)

This is what I could think of for now.

Currently I'm finishing of the final pieces for a first beta version. And I'll post this when I'm done with that so all can have a look.