Wednesday, August 26, 2009

Kill the Gatekeeper!

On Tuesday morning I attended an experience report given by Francis Lacoste, who's working on LaunchPad (not to be confused with our LaunchPad). He basically described the changes they made to their integration system to render it more Agile, more "continuous".

They initially had a single "Main" branch that they tried to never break, a bit like what we have in our department. They had a GateKeeper that would validate all changes submitted by developers, and only if everything passes (build, unit tests, etc.) would the change be applied to the main branch.

They realized this was preventing them to fully implement continuous integration, so they now work with a "stable main" and a "devel main". The developers can now push changes at any time they want to the "devel main". The gatekeeper resides between the "devel main" and the "stable main".

(Note: the gatekeeper in their case is not a human being, it is an automated tool)

3 comments:

  1. I find that idea interesting since maybe it would have prevented a problem we got in our group this week. Do you have more details on the kind of tools they were using as the gatekeeper between their dev view and main view? We have to find something that integrates well with our configuration management tool too.

    ReplyDelete
  2. They use Bazaar for their revision control. Unfortunately, I don't remember the name of the automated tool they use to propagate their commits between the devel. and stable branches. I think it's a Python tool.

    The way the "robot" validate each change before merging it in the stable main is to run their test suite (22 000 tests).

    ReplyDelete
  3. See the Core Technologies (CAE internal) blog for more comments on this post:

    http://wss.cae.ca/montreal/departments/ProdAndTech/Blogs/Lists/Posts/Post.aspx?ID=55

    ReplyDelete