CC.Net and Robocopy

I’m continuing to tune my continuous integration system. Today I switched the ‘deploy’ projects from using a CC.Net file system source control task to do the deployment to using Robocopy. This has sped things up nicely and made the deployments more configurable. One problem that I had was that the CC.Net “executable” task (the one that lets you run arbitrary executables) assumed that only exit codes of 0 were ‘success’ and Robocopy has a more complex strategy for exit codes (see here). Obviously you can wrap anything in a script that adjust the exit codes so that you can conform to CC.Net’s idea, but, well, I found it neater to add to the executable task object so that it can be told which codes should be considered as successful completion.

I think the next thing to do is write a file system source control provider that uses Robocopy to do all of the work; this would fix ALL of my issues with the existing CC.Net file system source control provider.