Craig Rowe

Techlead / Developer

30th April 2011

Last night I dreamt something existed that didn't..

Part of my role at Headscape has included looking at our development processes/practices. There's a blog in this (and it's coming soon), but as a brief teaser to that:

I'm using Cruise Control.Net to automate MSBUILD builds from our source control provider. Originally this was happening on a regular interval... but that's just annoying (if you get annoyed by such things) and led to waiting to see if it had built, or worse just force building anyway. Luckily Github and CodebaseHQ both have post commit/push hook mechanisms that we can take advantage of.

As you'd expect these processes post some data to a url of your choice when a push is received for a particular repository.

  • Great Stuff: I can simply post to a url to build from
  • Not so great stuff: I have no control over the hook other than the url it goes to

So, taking codebasehq as an example the post data they provide is json (as listed in their own repo). This is fantastic but the notification centre itself only allows creation of notifications to the project level, not repository level. So the repository name has to come from the post data itself (if I wish to build the CCNet project with the same name) i.e. I cannot use the url alone to identify the repository.

To join these two tools together I ended up making a small Application that could accept the post from Codebase and essentially forward it on to the appropriate CCNet build request. And so CIBridge came into existance, leading to the following workflow:

Commit Locally -> Push to Codebase -> Codebase Notification notifies CIBridge -> CIBridge forces a CCNet Build -> CCNet publishes the site

A better way?

Ok, so what I thought might be cool.. is customisable posts from these hosted source control providers. Something along the lines of a screen that allows you to build up a list of post variable 'templates' with keywords used to be replaced by the hook info during generation of the post.

So I could, for example, say 'I want one form variable called 'Repository' with the contents { name: %REPO_NAME% }' (where repo name is replaced by the repo that caused the notification).

In this way I could use the hosted source code provider directly, without the need for the bridge, nor for specific support from my current or future build server.

Am I missing something?

CIBrdige was a quick fix to get it running. Is there a better way?

Other Recent Posts

Workshop: Hack Yourself First(18th July 2017)


re:develop 2016(14th October 2016)

Having not made the trip down to Bournemouth for re:develop 1 or 2 it was great to be in attendance for it's third incarnation.…

DevSouthCoast GameJam 2013(15th September 2013)

Making games over a weekend... competitively... and we chose a dead technology... why the hell not!…

NodeCopter Southampton 2013(11th August 2013)

Hack Days are awesome. How could they not be? you get to make stuff with like minded people with no bosses, no client deadlines, no point but the love of it. …

Joining Dootrix(24th November 2011)

It's been a while since I posted. I'd like to say that's because a lot's been going on. In reality I got lazy and now I just happen to have something to write about that can make it sound like a lot has been going on.…