Thunderbird/Infrastructure/Canary System

From MozillaWiki
Jump to: navigation, search

Aims of the Canary System (in order of priority)

  • Provide a buffer system for mozilla-central breakages, so that they do not affect the main Thunderbird trunk tree, and landings can proceed in Thunderbird trunk.
  • Provide a buffer system that allows comm-central breakages to be distinguished from mozilla-central breakages
  • Facilitate regression finding by setting only valid revisions for both comm-central and mozilla-central code bases when going back to earlier revisions

Basic Design

Trees

  • Two trees build comm-central and mozilla-central
  • ThunderbirdUntested is the cutting-edge latest code.
  • Thunderbird is the comm-central plus valid mozilla-central revision.

We may wish to prioritise Thunderbird builds over ThunderbirdUntested builds.

Developer checkouts

  • client.py needs to be adjusted for two modes:
    1. Pull latest comm-central and update to a safe mozilla-central revision
      • This should be the default mode
    2. Pull latest comm-central and mozilla-central

Determining good changesets

  • Results of the boxes pushing to Thunderbird (the canary tree), will be parsed.
  • When a mozilla-central changeset has all green builds, the changeset will be counted as "good".
    • This should count unit test builders as well.
    • Not sure if we want to keep a note of the successful builds with test failures versus completely successful builds.

Matching good changesets

Simple option

What is the mozilla-central revision that builds with the latest comm-central?

  • Stores one revision, that gets updated by the canary tree parser whenever there is a green set of builds.
  • client.py queries this revision and uses it for the mozilla-central update command.

More complex option

Simple option plus If I want to go back to revision x of comm-central, what's a valid revision for mozilla-central?

  • Stores appropriate data to support:
    • pulling the latest OK revision of mozilla-central
    • pulling good revisions by date and revision
  • Support downloading all the data for off-line regression hunting.