Sheriffing/TBPL/DeveloperDocs: Difference between revisions

Remove developer contacts
(second pass)
(Remove developer contacts)
 
(10 intermediate revisions by 3 users not shown)
Line 7: Line 7:
Every checkin to a Firefox repository triggers the execution of several automated test jobs for the new revision. For each push the new source is compiled to a fresh binary on all supported platforms, and the resulting binaries are then tested by lots of automated unit and performance tests.
Every checkin to a Firefox repository triggers the execution of several automated test jobs for the new revision. For each push the new source is compiled to a fresh binary on all supported platforms, and the resulting binaries are then tested by lots of automated unit and performance tests.


TBPL shows a repository's state by correlating pushes (checkins) with the results of these automated jobs. For each push, the corresponding changesets (code changes) are listed in the left half of the page, and the triggered jobs are listed in the right half of the page. Every job (also called "build" and "run") is represented by one colored letter. The color of each letter depends on the success status of the job.
TBPL shows a repository's state by correlating pushes (checkins) with the results of these automated jobs. For each push, the corresponding changesets (code changes) are listed in the left half of the page, and the triggered jobs are listed in the right half of the page. Every job (also called "build" or "run") is represented by one colored letter. The color of each letter depends on the success status of the job.


Developers need to make sure that their changes don't "break the tree", i.e. that they don't cause any tests to fail, so they'll usually monitor TBPL for a while after they've checked in.
Developers need to make sure that their changes don't "break the tree", i.e. that they don't cause any tests to fail, so they'll usually monitor TBPL for a while after they've checked in.
Line 27: Line 27:
= Development documentation  =
= Development documentation  =


There is no design doc for development. Development happens in the repository at http://hg.mozilla.org/users/mstange_themasta.com/tinderboxpushlog/ and in the Bugzilla component Webtools : Tinderboxpushlog.
There is no design doc for development. Development happens in the repository at https://hg.mozilla.org/webtools/tbpl/ and in the Bugzilla component Webtools : Tinderboxpushlog.


Installation instructions are given in the [http://hg.mozilla.org/users/mstange_themasta.com/tinderboxpushlog/raw-file/tip/README README file].
Installation instructions are given in the [https://hg.mozilla.org/webtools/tbpl/raw-file/tip/README README file].


TBPL doesn't have versions or milestones. Changes are usually implemented in response to a bug in Bugzilla (see [https://bugzilla.mozilla.org/buglist.cgi?quicksearch=OPEN+product%3AWebtools+component%3ATinderboxpushlog list of open bugs]) and deployed as they come in. The motivation behind specific parts of the code can be figured out by looking at the hg annotate of the file and tracing it back to the bug where the code was landed.
TBPL doesn't have versions or milestones. Changes are usually implemented in response to a bug in Bugzilla (see [https://bugzilla.mozilla.org/buglist.cgi?quicksearch=OPEN+product%3AWebtools+component%3ATinderboxpushlog list of open bugs]) and deployed as they come in. The motivation behind specific parts of the code can be figured out by looking at the hg annotate of the file and tracing it back to the bug where the code was landed.


= Logical diagram  =
== Implementation overview ==


Can I see an example of such a diagram? I'm unclear what's requested here.
(I'm going to start a design doc right here, though it should probably be broken out to a different wiki page at some point.)


= Physical diagram  =
TBPL is mostly about useful presentation of data that's already available elsewhere. For example, the list of pushes to a repository is at hg.mozilla.org/repository/pushloghtml ([http://hg.mozilla.org/mozilla-central/pushloghtml e.g. mozilla-central pushlog]). Another example is the [https://build.mozilla.org/buildapi/self-serve self-serve UI] that allows one to cancel and restart builds. So it's TBPL's job to reassemble that data in a way that's as accessible for developers as possible.


not fixed yet
For some of that source data, TBPL is the only human-readable presentation. Run result data, for example, is only available as JSON (from Buildbot).
 
There are two exceptions to the "data comes from outside" principle: Job comments (also called "build stars") and the list of hidden builders will be stored on the TBPL server itself, in a MongoDB database. In Tinderbox mode both these things were stored on Tinderbox.
 
=== Architecture ===
 
TBPL started out as a pure client-side JavaScript webapp. All data used to be gathered and assembled in the user's browser. Over time, TBPL has grown a small collection of PHP scripts that make up its server-side component.
 
We want to do as much as possible on the client side because that's easier to develop and play with, especially for outsiders that haven't been involved in TBPL development before. If something is handled on the server side, that's for one of these reasons:
* It acts as an interface to the database (e.g. getRevisionBuilds.php or submitBuildStar.php).
* It makes use of "secret" data (submitBugzillaComment.php which needs a bugzilla user password).
* It performs a very expensive operation where the results should be cached (all other php scripts).
 
== File descriptions ==
 
[https://spreadsheets.google.com/spreadsheet/ccc?key=0AloqqAegSq7udGdXdVc2UHBVdFo3eFpBbFRXcWhmU3c&hl=en_US I'm building a table here, I'll import it into the Wiki when I'm finished]
 
(to be continued...)


= Hardware  =
= Hardware  =
Line 52: Line 69:


Any form of unix that's supported by Apache, PHP, Python and MongoDB should work. IT will decide what will actually be used.
Any form of unix that's supported by Apache, PHP, Python and MongoDB should work. IT will decide what will actually be used.
= Interface settings and IP allocations  =
This section needs to be filled in by IT.
=== VLANs  ===
=== Private interfaces  ===
=== Public interfaces  ===


= Network flows  =
= Network flows  =
Line 95: Line 102:
(what database server(s) - rw & ro, db name(s), db username) Other requirements  
(what database server(s) - rw & ro, db name(s), db username) Other requirements  


TBPL currently uses a read-write MongoDB database, configured to use the default settings (localhost:27017).
TBPL MySQL databases:
Production lives on generic1.db.phx1.mozilla.com at the db tbpl_mozilla_org


Rewriting TBPL to use elastic search instead would only take a few hours but it's unclear whether it's worth doing.
dev and stage both live on dev1.db.phx1.mozilla.com:
Stage: tbpl_allizom_org
Dev: tbpl_dev_allizom_org


= File storage  =
= File storage  =
Line 116: Line 126:
The importer is idempotent; it never destroys data and it doesn't insert duplicates.
The importer is idempotent; it never destroys data and it doesn't insert duplicates.


=== Puppet  ===
= Other links =
 
See the main TBPL page: [[Sheriffing/TBPL]]
(what modules/classes will be used?)
 
(what's "Puppet"?)
 
= Monitoring  =
 
=== Nagios  ===
 
(what checks will need set for this service?)
 
= Ganglia Update / Push procedure  =
 
(how to update the code, db, etc)
 
= Common Troubleshooting  =
 
= Backup / DR  =
 
(where are backups stored if any?
 
How can someone else fix this site in a disaster?)
 
I don't know. Only the MongoDB would need to be backed up, but how would that be done?
 
Most of TBPL's data comes from other sources and can be reassembled by simply running the importer (dataimport/import-buildbot-data.py) again. The two exceptions are job comments (also called "build stars") and the hidden builder list, which are directly stored in the TBPL MongoDB and don't come from other sources.
 
= Staging site  =
 
= Deployment Bugs  =
 
= Admin Contacts  =
 
Primary Admin:
 
Secondary Admin:
 
= Developer Contacts =
 
* Markus Stange <mstange@themasta.com> (original creator)
* Arpad Borsos <arpad.borsos@googlemail.com> (active contributor)
* (Ehsan Akhgari <eakhgari@mozilla.com> (contributor who's also a MoCo employee))
canmove, Confirmed users
1,126

edits