[TIP] continuous integration - what are you using?
C. Titus Brown
ctb at msu.edu
Sun Sep 6 18:33:34 PDT 2009
On Thu, Sep 03, 2009 at 09:42:32AM -0700, Doug Latornell wrote:
-> On Fri, Aug 28, 2009 at 5:25 PM, Doug Latornell <doug at sadahome.ca> wrote:
-> > > Likewise. I switched to buildbot from a home-brewed Python script
-> > earlier this year.
-> > ...
-> > As Marious say, buildbot it powerful, but it was a lot of work to set up.
-> On reflection, I think I may have over-emphasized the difficulty or
-> inconvenience of getting buildbot set up. Most of that came when I
-> started writing custom buildsteps to implement behaviours specific to
-> our CI process.
-> Installing buildbot and having it do periodic a checkout from the tip
-> of your repository, run the test suite, and report the results to you
-> somehow is pretty straight forward. When you start adding
-> requirements things get more complicated, but that's natural, isn't
-> In the context of "Make the simple things easy, and the difficult
-> things possible", CI is a "difficult thing", so there is bound to be
-> complexity in tools that do it.
I have been focusing in on CI quite a bit over the last few months, and
I will be delving deeper on my blog at some point... but I have two
First, you are entirely right that writing a framework to build and test
things cross-platform (what I call "integration" ) is tough. In
fact, when I set out to write pony-build, I was surprised at how quickly
I got to 60% functionality... and then dismayed to see how long it took
me to get to 80% from there, because of the implications for the final
It's easy to write something ad-hoc for CI. Generalizing from that is
much more difficult. Buildbot does an astonishingly good job, once you
That having been said, my second point: I think the CI world needs more
strong opinions. There is a Right Way to do basic building,
installation, and testing. This area of "opinionated software" is one
place where I feel that buildbot could do much better: for example, why
not include reasonable defaults for small projects? e.g.
test_foo = factory.DistutilsBuildAndTest('packagefoo')
...and then include a little script wizard that created a default
nightly build for foo? I bet that would match 50% or more of the use
cases for buildbot users, and obviate a lot of the zc.buildout whatnot
that is going on.
My CI philosophy, in other words, is: solve the needs of people with
simple needs, because it's (a) good marketing for you and (b) the Right
Way to do things. And if a project has some special build steps in
there, then they can bloody well work at configuring buildbot to do that
Anyway, I will be posting more -- much more -- on CI over the next few
weeks and months. Watch This Space.
 See Martin Fowler's discussion here, though:
C. Titus Brown, ctb at msu.edu
More information about the testing-in-python