ReleaseEngineering/Applications/Clobberer
Application Description
The clobberer allows developers to "clobber" particular build directories (objdirs) on particular slaves. This is sometimes necessary if a change is committed that is not compatible with previous objdirs, or occasionally when a compile failure results in a bogus objdir.
The application has an outward-facing web interface for developers, and also provides an internal web service which buildslaves contact to determine what build directories they should clobber.
Requirements
- MySQL server (SQLite is also possible, but we are using MySQL in production and staging)
- PHP and Apache
Resources
- two MySQL databases (production and staging)
- currently runs on dm-wwwbuild01 (http://build.mozilla.org)
Security
Clobberer uses the LDAP username verified and supplied by Apache, with some users having slightly elevated priviledges (the ability to clobber release jobs).
Monitoring
At the moment, clobberer is not monitored.
Deployment
Clobberer is installed in /var/www/html/build/clobberer/ on dm-wwwbuild01. Its contents are just an index.php and a credentials file for the database access. Its public URL is https://build.mozilla.org/clobberer/ and staging is https://build.mozilla.org/stage-clobberer.
Cleanup Crontab
As of bug 666282, periodic db maintenance is handled by cleanup.php, which is invoked via wget in cleanup-clobberer.sh. Authentication is via a simple shared secret (at worst, someone with the password can clean the database more frequently - but DOSing clobberer is not nearly that hard!). That script is run from a crontab, although exactly how that works is not yet determined.
Development
Source is at http://hg.mozilla.org/build/tools/file/default/clobberer
Tests for clobberer are in test_clobberer.py in the same directory as index.php.