Sunday, March 27, 2011

Using a Continuous Integration Server for Home Development

As a follow up to one of my previous posts 'Using Version Control for Home Development', I am now asking about opinions as regards using a Build Server for a pet project.

Lately I have been reading about this 'Build Servers' concept, and I have looked at applications such as Maven and CruiseControl.Net.

And thus I ask, how feasible is it to use something like CruiseControl.Net for my home pet projects?

Reason I ask is that I think that these Build Servers are mainly aimed for team projects...but then again, I'm still very new to this Automated Build process.

Keep in mind that most of the time, these pet projects are only handled by one man, not a team.

So should I look more into this concept for the sake of using at home, or should I just get some practice on it for experience's sake?

[EDIT]

Although I thank you all for your answers as regards alternatives to CC.Net and such, no one has yet really tackled the issue of whether it is feasible or not to implement a Build System for Home Development ?

From stackoverflow
  • i installed CC.net months ago it took me a whole night to configure it and create the xml configurations and i have no regrets about it, it smoothly integrates with SVN, Nunit, Nant or Msbuild. you should try it only if it is to gain experience

  • Take a look at Hudson its very easy. You need to just deploy in Tomcat or any other servlet you use container. Once up every configuration can be done using browser. Hudson supports maven, ant etc and supports all the major SCMs. I have been using hudson for the past one year and not faced any trouble.

  • As an alternative to CC.Net, I recommend you to give a look to TeamCity, is really easy to setup and get it up and running.

    Related question:

  • CC.NET is very feasible, in fact with the free cost and wide ranging supported actions. Not to mention the fact that since you can get the source code you can modify it to you needs I could not imagine anything better. I read the other compliants about how difficult it is to set up, but to be honest I had my first simple TFS/VS2005 project up within an hour. Just remember if you run into any issues or snags CC.NET has a pretty active google groups for Users and Devs who would be willing to help you through any gotchas.

  • It is completely feasible to implement a build server for your home projects. I've implemented CC.Net for my home projects myself and it is pretty easy to do so, even for the first time. I would say the learning curve (depending on your experience) is less than a day to get your first project up and building, though there is always the longer tail on that curve as you dig into some of the more interesting details.

    The question to me is more one of the motivation for continuous integration on these projects. If you are using "Home Project" synonomous with "Throw-away Project", there probably isn't much point in going to the trouble of CI unless you are using it specifically as a CI learning excercise.

    However, assuming these are not throw-away projects you are talking about, I've found (in addition to the more obvious benefits of automation) that implementing CI helps reduce the overhead involved in coming back to a project you've walked away from for some period of time. Of course, unit tests are the most valuable asset in this regard, but the combination of unit tests with an automated build/deployment process really allows you to focus on the new and changed requirements when you come back to a project after having set it down for a while.

    Additionally, as mghie points out in the comments to this answer, "CI will give even greater benefit for home projects if they build upon each other, so changes in one project could cause the build to break in others."

    My advice, just do it once so you have a clearer picture of what is involved and the benefits you might reap and drawbacks you might incur. Then make the decision for yourself as to whether or not it is worth continuing to do. Like I said, the learning curve is reasonably low so the investment you will have to make in just giving it a try shouldn't be the reason not to.

    Nutshell: Feasible - Yes, Desirable for home projects - Quite Possibly, Worth further investigation - Definitely, Investment - Relatively low

    mghie : +1, a very nice answer, inasmuch as one can answer the question for the OP. I would probably add that CI will give even greater benefit for home projects if they build upon each other, so changes in one project could cause the build to break in others.
  • I love CC.NET and I'm a big fan of CI, but I have to ask: with only one developer on the project, what integration scenarios exist? Wouldn't you just build the entire project in Visual Studio, negating the need for CI?

    Alex : CI does not just mean compiling. You could also 1. Delete out source directory and building fresh works out some dependency and linking issues. 2. Unit Tests, Static Analysis, Code Metrics 3. Automated UI test on multi platforms 4. things like D'oxygen 5. Publish or Installer on demand
    Robert S. : That's what I would use NAnt for.
    Alex : OK, well that is CI no matter what you use, so I don't see how building it in Visual Studio negates the need for CI
    Robert S. : Because CI is a continuously-running server that polls your source for changes and integrates them with everybody else's. One developer, one machine...why run a server for one guy? Is he going to save his code and wait for the CI process to run?

0 comments:

Post a Comment