On Tue, Sep 07, 2010, Paul Larson wrote:
This looks great! Just out of curiosity, did you look at anything else such as buildbot maybe? I'm curious what reasons you had for choosing hudson over other alternatives.
I did! Thanks for asking! :-)
In fact, before I started looking for some daily build infrastructure, I had heard two strong recommendations of hudson, but I still went the buildbot route because as nice as it sounded, Hudson is Java and I thought it would be pain to extend and integrate.
So I went with Buildbot, and sure enough it's Python. After some 4 hours, I had it decently setup to pull from a git repo and build one u-boot branch for one flavour. I had to tweak a couple of minor things to do it, nothing major, and I mostly time learning the slightly special semantics / workflow of buildbot. I also realized that I'd have to extend it to do some of things I needed, like publication of the results.
Then I read another strong recommendation for hudson in a thread on a Canonical mailing-list; the case study was rich and complex, so a significant amount of time had been put into it. I decided to try Hudson out, and I was immediately very successful at doing the same things as with buildbot and more. Once you've played with Hudson, Buildbot feels very basic. Hudson has many plugins and extension points, while Buildbot is more like a good structure for a custom infrastructure. Out of the box, Hudson comes with many plugins and a feature-rich web UI which gets you to the meat of your own problems faster, but the underlying structure is as rich.
Now that I've set it up, I certainly know it was the best choice, but I can also see how it's going to be hard to extend this setup for other tasks. For instance, if I wanted to have a different web UI to serve the results, or if I wanted to setup git watches on multiple trees to trigger a build. It's all doable, but it ends up being as hard as with buildbot if you go significantly away of what it's designed to do.
I suspect the large Buildbot instances out there are all pretty much forks of the upstream Buildbot which are unlikely to move to a newer buildbot; they used buildbot as a good, simple, transparent mini-structure for integration builds and extended it, while Hudson encourages the plugin mechanism and continuous upgrades of your Hudson deployment just a bit more, so that it built a larger base of features out of the box.
I have complete notes of the step I took and I even have my buildbot instance on my laptop (stopped); I'm happy to share these with you if you'd like to read more or would like to reproduce.