It’d be great if you could get a .net oriented build service online somewhere, which you could configure to look at your repository, crank out your build(s), and put them somewhere useful.
I’m not sure how you even begin to make that useful. For a start, build servers need all kinds of custom stuff on them that things like source control don’t, eg: custom libraries.
OTOH, I guess when your build includes custom libraries, it’s just packaging them up, not running them, so it’s not as scary as allowing people to run just anything on your machines.
You could provide MSBuild-based builds without paying license fees I think; it comes with the .net framework,no? OTOH, I often use the setup and deployment packages in visual studio, which require you to actually build with the development environment, so that might be hard to achieve.
What would you actually need to make something like this work, at a minimum?
- MSBuild tasks
- Some kind of msi builder, something open source would be good (maybe nsis? http://nsis.sourceforge.net)
- General tasks for email, ftp, web services, yada yada
- Possibly, an ability to have custom files not from source control that are nevertheless to be part of the build. This would be to support 3rd party components
Now one thing this doesn’t cover is the ability to run unit tests. Nothing up to this point involves running custom code (does MSBuild support custom pre & post build steps? something to look at, because that’s also custom code). This is a tricky part, but in theory a well configured security setup should mean you can allow custom code, because it can’t harm anything. Coupled with timeouts for builds that take too long (hard timeouts; blam you’re dead kinda timeouts), you could accomodate this.
Does anything like this already exist?
If it doesn’t, then why not?
Also, all the tools above are free. So, the only thing costing here (besides labour!) is hosting space and time. Is there a way to provide the above for free, or close to free? Maybe for money for commercial stuff, free for open source and/or individuals?
btw a trick to distinguish open source/free software projects from commercial, is to make everything readable by everyone for the free stuff. If you want it private, you pay for the privellege.