[OPEN-ILS-DEV] Continuous integration (was: Planning for Evergreen development, post 2.0)
Dan Scott
dan at coffeecode.net
Thu Jan 27 01:11:41 EST 2011
On Tue, Jan 25, 2011 at 11:20:48PM -0700, Brian Feifarek wrote:
>
> dbs++
>
> I think this would a great contribution to make development easier
>
> > Date: Wed, 26 Jan 2011 00:22:23 -0500
> > From: dan at coffeecode.net
> > To: open-ils-dev at list.georgialibraries.org
> > Subject: Re: [OPEN-ILS-DEV] Planning for Evergreen development, post 2.0
> >
> > On Fri, Jan 07, 2011 at 01:01:50PM -0500, Dan Scott wrote:
> > Something closer to reality than I would have expected a few days ago is
> > the possible return of continuous integration to Evergreen. I spent a
> > chunk of today putting together a CI server on a Debian Squeeze VM using
> > the buildbot project code from http://buildbot.net and have a master
> > definition for OpenSRF that the build slave uses to follow commits and
> > automatically configure, compile, run unit tests, and run checks (like
> > pylint) against the updated source.
An update:
Thanks to Equinox for providing me with the credentials to access their
testing server; as of today we have a continuous integration server at
http://testing.evergreen-ils.org/buildbot that currently is tracking
OpenSRF trunk and running configure / compile / available unit tests /
pylint for every commit. It will attempt to send email to the
open-ils-dev mailing list if a failure occurs (I've told it to ignore
failures reported by pylint).
To-do: Lots! Some ideas:
* My highest priority: we need to start tracking Evergreen trunk and
various branches; for that purpose, I hope we can secure
one or more servers on which we can install OpenSRF and
configure/compile/test Evergreen branches. Why a separate server
for Evergreen, you ask? We need to have at least one "clean" server
to build, compile, and test OpenSRF on without any files lingering
from prevous OpenSRF installs (I discovered a lingering file was
masking at least one unit test failure).
* Add more build slaves to provide distribution coverage (for example,
Debian Lenny vs. Debian Squeeze vs. RHEL 6 vs. Ubuntu Lucid). Build
slaves don't require much horsepower, as (at least for the build
target I currently have defined) they don't need to run OpenSRF or
Evergreen. They just need to have the OpenSRF (and for Evergreen
testing, Evergreen) prereqs installed so that we can configure,
compile, and run tests. Well, and the buildbot-slave Python package
needs to be installed so that they can talk to the build master.
* Add more tests! Now that we're actually running tests regularly and
reporting on failures, they have real value.
* Add more build steps, such as creating release tarballs. That should
be relatively straightforward for OpenSRF but there's a lot more
required for Evergreen. Ideally most of the logic will be built into
the Makefile where everyone can benefit instead of getting tucked
into custom buildbot steps.
* Customize the HTML templates for buildbot so that it integrates into
the Evergreen project rather than being a completely separate beast.
(A low priority IMHO compared to the others).
I have to say that working with buildbot has been close to painless. I
wouldn't have anticipated being able to go from nothing to a working CI
server in a day and a half, but the documentation is thorough, the
source is easy to dive into when necessary, and the configuration file
is written in Python itself (ah Python!) - see
http://svn.open-ils.org/trac/OpenSRF/browser/trunk/examples/buildbot.cfg.
Oh, and the buildbot community has been very responsive and supportive
at #buildbot - a huge factor in its favour.
More information about the Open-ils-dev
mailing list