Sunday, August 21, 2011

Let's use hudson as our CI server on Amazon EC2

Hey everyone,

Since we're both lazy, we don't want to build our project manually. So we've been using Hudson as our CI server. Over the past few weeks we've been working on the build process and it's coming along pretty nicely. Here's our situation:
  • 2 person "distributed" team
  • Can't setup a physical server ourselves (lack of equipment and connection guarantees)
  • Need remote access so we can both use it
Well, after searching around we decided to settle on an Amazon EC2 instance. The biggest reason is that you can try a micro instance free* for a year. That allows us to see how it performs in the meantime.

So we've set it up, and it's pretty decent so far. We have a ubuntu instance deployed running Hudson, with our jobs polling Mercurial for changes and building the project.

A couple things I've run into:
  • Don't install ant via apt-get. Don't ask me why (maybe I'm doing something wrong), but when I install via the package manager it doesn't get all the required libraries -- it seems to be missing some tasks.
  • CPU Usage - During the running of our unit tests CPU usage occasionally goes 'past' 100%. This really slows down the tests some times. Our tests that hit the db take about 2 minutes normally but took 14 minutes at one point.
I guess the problem might be solved by upgrading the instance, but it's not a big problem for us. Since the db tests only run on production builds (which run nightly) speed isn't vital for them. Our regular unit tests which run when the Test branch is changed run pretty fast.

And finally, I'd like to give a shout out to this hudson tray tracker application. It puts an icon on your system tray that shows the status of your hudson jobs. You can also bring up a window to run builds or view the output.

Hudson Tray Tracker.
 It's pretty convenient, although I wish it had TFS style build notifications where you get a pop up when every a build is started or completed. Overall though I can't complain.

Next time I will share the shell script we use to set up hudson on our instance -- this includes installing ant, tomcat, mysql, mercurial, and a couple other things. But we really want that process automated.







* actually, it seems I currently owe $0.31 for I/O requests. I still think it's worth it...

Wednesday, August 17, 2011

Back in school

Hey guys,

Apologies for the delay. I'm back in school and things have been pretty hectic lately. We're still working on deploying the web app, but in the mean time I've been working with Clojure both on the JVM and the CLR. So expect something related to that at some point. I'm still not done unpacking!