Wednesday, December 17, 2008

Understanding the Release Engineering buildbot setup (introduction)

In Release Engineering we use buildbot (an external project written in python) to automate builds for us at certain times, do builds on change and do many different things.
With this blog post I would like to introduce you to the logic of the code we use (mozilla2/master.cfg)

In general words it works like this:
  1. import modules from python, twisted, buildbot and our own custom modules buildbotcustom
  2. import configuration files regarding slaves and each branch
  3. for every branch do:
    1. setup a TinderboxMailNotifier
      1. if L10n is enabled for this branch setup a TinderboxMailNotifier for "Mozilla-l10n" and for "Mozilla-l10n-%locale%"
    2. add the HgPoller for this branch and the associated Scheduler
    3. add a Periodic scheduler if enabled for this branch
    4. for every nightlyBuilder generate a Nightly scheduler
      1. if L10n enabled for this branch add a DependentL10n scheduler
    5. for every platform defined for this branch do:
      1. create builders for dependent builds (periodic and build-on-change)
      2. create builders for nightly builds (if it is not a debug platform)
        1. if L10n enabled for this branch add a nightly builder for this platform
  4. end of for every branch loop
  5. import Release Automation configuration
  6. import Mobile configuration
  7. import UnitTest configuration (it is coming soon)
NOTE: I am omitting smaller details and I could be slightly wrong in some of the steps but we can go deeper into details if I do more blog posts

No comments:

Post a Comment