Build Master: Scheduling II

Brad Roberts braddr at puremagic.com
Wed Dec 4 11:52:06 PST 2013


On 12/4/13 12:18 AM, Jacob Carlborg wrote:
> On 2013-12-03 20:08, Brad Anderson wrote:
>
>> Historically, Walter has created the release zips (just using the
>> makefile, I believe). As far as I know, work hasn't begun on getting the
>> autotester to roll releases.
>
> I doubt he has a completely automated process of doing it. It has failed too many times.
>
> Having the autotester building and handling everything should be our primary goal.
>

I'm not sure this is really a good goal any more.  The overlap between testing and releasing isn't 
as big as I originally thought.  Add to that that the very definition of what a release is is in 
question.  The only overlap that really exists is that there's a set of boxes that exist and that 
they build in somewhat similar ways.

But there's also a hell of a lot of differences.  Ignoring pulls for the most part, there's little 
coordination between the platforms in terms of what to build.  It's always "whatever is current" 
which changes over time.  There's no current automation for how to package a release that's part of 
the packages being tested (there's some fledgling support inside the packages, there's some tooling 
that lives off in other places).  There's parts of the releases that have no source and aren't part 
of what's being tested.  If we stick to having a zip that contains multiple platforms, there's no 
code to rendezvous multiple platforms together.  The auto-tester covers a smaller set of platforms 
than release builds are currently done for (example, there's several linux distros that have distro 
specific packages, not all of which are represented by test boxes).

All in all, while I was of the opinion that the test fleet could serve the role of release builders 
and pushed that with Walter and Andrei, I'm much less convinced that's the right short term answer 
right now.  It might become the right answer once a number of the open questions are answered and 
once the automation for building the releases are improved, but not yet.  I guess the 'have the 
auto-tester do it' mentality really hand waves away that most of the work still has to be done to 
make it something that might one day be run automatically.

The auto-tester isn't nearly as magic as I think a lot of people think it is.  It's very little more 
than a set of clients that:

0) ask a server for what package/branches to checkout and optionally what package/branch to merge
1) checkout a set of git repos
2) for a pull test: merge a branch in a particular repo
3) run make in each
4) run make unittest in each
5) for each of the actions in 1-4, ship the success or failure status and the log file to the 
results server
6) Repeat forever.

And a server that collects the results and answers the question asked in #0 above.  There's some 
interesting logic in deciding how to answer that question and a little bit of fun logic to sync 
between state between github and the server.  But it's not particularly fancy or complicated at the 
component level.

My current 2 cents,
Brad



More information about the Digitalmars-d mailing list