[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
-> it?
-> 
-> 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.

Hi Doug,

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
thoughts.

First, you are entirely right that writing a framework to build and test
things cross-platform (what I call "integration" [0]) 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
20%.

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
configure it.

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.

cheers,
--titus

[0] See Martin Fowler's discussion here, though:

	http://martinfowler.com/bliki/FeatureBranch.html
-- 
C. Titus Brown, ctb at msu.edu



More information about the testing-in-python mailing list