I've got a continuous integration setup using Hudson and lately I've configured the jobs to use svn update to get the latest version of the code. I really like this approach since it allows msbuild to version appropriately and only build the effected assemblies.
However, I've noticed that since I'm not doing a build of all the assemblies again, I loose all of the compiler warnings for those assemblies if they aren't built.
For example, if I have 3 assemblies with dependencies demonstrated via indenting:
- Assembly 1 10 warnings
- Assembly 2 (Depends on 1) 10 warnings
- Assembly 3 (Depends on 2) 10 warnings
- Assembly 2 (Depends on 1) 10 warnings
The first build will build all 3 assemblies and log 30 warnings.
Next build, if I only change Assembly 3, Hudson will only build Assembly 3 and I will only get 10 warnings for that build, effectively marking 20 warnings as "fixed".
As far as I can tell, there isn't going to be any way around this, but I would love to know if anyone has configured Hudson to retain these compiler warnings from one build to another.
Edit: Yes I realize that this can turn into a debate of "you should / shouldn't be doing an update on a CI box", but there are reasons we went with the update approach.
- Its roughly 3x faster
- We're still producing the most up to date assemblies
- msbuild can version the assemblies appropriately.