Subject: sbuild (or whatever) integration

From: Florian Weimer <[email-masked]>
Date: Sat, 19 May 2007 15:17:04 +0200

I'd like to build something that integrates a Debian autobuilder
(sbuilder probably) with GIT.  The intent is to get rid of a
designated integrator (our team is of a size where this seems a
reasonable thing to do[1]) and ensure predictable builds, independent
of what developers happen to have installed on their local
workstations.

Basically, what I want to do is this:

  1. Perform a checkout from a specific branch.

  2. Synthesize a new version number that is bigger than the previous
     one.  (This needs to keep a bit of extra-repository state.  At
     this stage, it's probably a good idea to ensure that the previous
     commit built on this branch is an ancestor of the current HEAD.)

  3. Generate a fake Debian changelog entry giving the HEAD commit and
     the branch name, using the generated version number.

  4. Build the whole thing in a controlled environment.

  5. Store the build log for later review.

  6. If the build was successful, transfer the packages to some
     repository (based on the branch that was used).

The GIT repository in step one is a shared one, with an update hook
that that ensures fast-forward merges, as in:

<http://www.kernel.org/pub/software/scm/git/docs/howto/update-hook-example.txt>

The idea is that this means that features are monotonic along a
branch.  Ideally, I would like to have something which can assign
meaningful version numbers across two branches, but this is of course
impossible to automatically.  I hope to work with a single release
branch anyway, and use at most two (one for testing, one for
production).

Does this sound reasonable?  Has anybody built something similar?

[1] This is for internal development, and due to various constraints,
    we haven't got developer-specific integration testing
    environments.  That's why we need to linearize before actual
    deployment.