ReleaseEngineering/Applications: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
= RelEng App Store =
= Build Masters =
== build masters ==
we have lots!
we have lots!


canonical list is supposed to be http://hg.mozilla.org/build/tools/raw-file/default/buildfarm/maintenance/production-masters.json
The user-visible list is at [https://intranet.mozilla.org/RelEngWiki/index.php/Masters Masters] (auth required).  The canonical list is http://hg.mozilla.org/build/tools/raw-file/default/buildfarm/maintenance/production-masters.json


source for buildbot is at http://hg.mozilla.org/build/buildbot/
source for buildbot is at http://hg.mozilla.org/build/buildbot/


== clobberer ==
= Clobberer =
https://build.mozilla.org/clobberer/ and https://build.mozilla.org/stage-clobberer
https://build.mozilla.org/clobberer/ and https://build.mozilla.org/stage-clobberer


Line 14: Line 13:
DB is a sqlite file local to the web server
DB is a sqlite file local to the web server


== buildapi ==
= Buildapi =
includes self-serve, wait time reports, pending/running
includes self-serve, wait time reports, pending/running


=== Source Code ===
== Source Code ==
http://hg.mozilla.org/build/buildapi
http://hg.mozilla.org/build/buildapi


=== Public Interfaces ===
== Public Interfaces ==
https://build.mozilla.org/buildapi
https://build.mozilla.org/buildapi


=== Current Setup ===
== Current Setup ==
production instance is running on cruncher.b.m.o out of
production instance is running on cruncher.b.m.o out of ~catlee/buildapi-official. There is a cron job that checks for new changes every 5 minutes and deploys them. This instance is exposed to the public behind LDAP auth via proxy from the build.m.o url.
~catlee/buildapi-official. There is a cron job that checks for new changes
every 5 minutes and deploys them. This instance is exposed to the public
behind LDAP auth via the build.m.o url.


The buildapi instance communicates with a rabbitmq server also running on
The buildapi instance communicates with a rabbitmq server also running on cruncher. It also connects to two read-only databases (schedulerdb, statusdb) on a slave mysql host maintained by IT.
cruncher. It also connects to two read-only databases (schedulerdb, statusdb)
on a slave mysql host maintained by IT.


The self-serve agent, which is responsible for performing many of the job
The self-serve agent, which is responsible for performing many of the job requests, is running on production-master03 out of ~cltbld/buildapi. It is a long-running process that waits for messages from the rabbitmq server on cruncher, and then makes various DB modifications or pokes at masters' web interfaces. The self-serve agent is started via init, and monitored via nagios.
requests, is running on production-master03 out of ~cltbld/buildapi. It is a
long-running process that waits for messages from the rabbitmq server on
cruncer, and then makes various DB modifications or pokes at masters' web
interfaces. The self-serve agent is started via init, and monitored via
nagios.


To modify the list of branches supported by buildapi and self-serve, read [[ReleaseEngineering/BuildAPI#Maintenance]]
To modify the list of branches supported by buildapi and self-serve, read [[ReleaseEngineering/BuildAPI#Maintenance]]


=== Setup Instructions ===
== Setup Instructions ==
Described at [[ReleaseEngineering/BuildAPI]]
Described at [[ReleaseEngineering/BuildAPI]]


== slavealloc ==
= slavealloc =
See [[User:Djmitche/Slave Allocator Proposal]] for now.
(still being deployed .. so at the moment all of this is future)
== Application Description ==
Slavealloc is a client-server application.  The client is [http://hg.mozilla.org/build/puppet-manifests/file/tip/modules/buildslave/files/runslave.py runslave.py].  Communication is via a very basic HTTP request to http://slavealloc.build.mozilla.org/production/gettac/$slavename, where the response is expected to be a <tt>buildbot.tac</tt> file suitable for use to start buildslave.


== regression detection ==
The slavealloc server is a implemented as a small Twisted application ([http://hg.mozilla.org/build/tools/file/tip/slavealloc source]) which serves the tac generator, a JSON REST interface, and a client-side JavaScript interface.
 
The same source code also implements a command-line frontend to the REST interface.
 
== Requirements ==
 
== Deployment ==
 
== External Resources ==
 
== Security ==
The slave allocator hands out low-security slave passwords in the .tac files, which are stored in cleartext in the database.  It does not do any sort of authentication either for read or modify operations, and relies on the Build VLAN firewalls to prevent external access.
 
== Development ==
Install tools in a virtualenv:
cd tools
virtualenv sandbox
sandbox/bin/pip install -e .
Then you can run the slavealloc daemon locally from the root of the tools repository with a simple:
sandbox/bin/twistd -noy slavealloc-combined.tac
Note that due to what I believe to be a bug in pip, you may need to explicitly install Twisted to get the twistd executable installed:
pip install -U twisted
 
This configuration will use SQLite to access {{{slavealloc.db}}} in the current directory.  You can hack on the static web content while the daemon is running.
 
== See Also ==
See [[User:Djmitche/Slave Allocator Proposal]]
 
= regression detection =
code is http://hg.mozilla.org/graphs/file/9c02347596b4/server/analysis
code is http://hg.mozilla.org/graphs/file/9c02347596b4/server/analysis



Revision as of 22:37, 18 March 2011

Build Masters

we have lots!

The user-visible list is at Masters (auth required). The canonical list is http://hg.mozilla.org/build/tools/raw-file/default/buildfarm/maintenance/production-masters.json

source for buildbot is at http://hg.mozilla.org/build/buildbot/

Clobberer

https://build.mozilla.org/clobberer/ and https://build.mozilla.org/stage-clobberer

Source is at http://hg.mozilla.org/build/tools/file/default/clobberer

DB is a sqlite file local to the web server

Buildapi

includes self-serve, wait time reports, pending/running

Source Code

http://hg.mozilla.org/build/buildapi

Public Interfaces

https://build.mozilla.org/buildapi

Current Setup

production instance is running on cruncher.b.m.o out of ~catlee/buildapi-official. There is a cron job that checks for new changes every 5 minutes and deploys them. This instance is exposed to the public behind LDAP auth via proxy from the build.m.o url.

The buildapi instance communicates with a rabbitmq server also running on cruncher. It also connects to two read-only databases (schedulerdb, statusdb) on a slave mysql host maintained by IT.

The self-serve agent, which is responsible for performing many of the job requests, is running on production-master03 out of ~cltbld/buildapi. It is a long-running process that waits for messages from the rabbitmq server on cruncher, and then makes various DB modifications or pokes at masters' web interfaces. The self-serve agent is started via init, and monitored via nagios.

To modify the list of branches supported by buildapi and self-serve, read ReleaseEngineering/BuildAPI#Maintenance

Setup Instructions

Described at ReleaseEngineering/BuildAPI

slavealloc

(still being deployed .. so at the moment all of this is future)

Application Description

Slavealloc is a client-server application. The client is runslave.py. Communication is via a very basic HTTP request to http://slavealloc.build.mozilla.org/production/gettac/$slavename, where the response is expected to be a buildbot.tac file suitable for use to start buildslave.

The slavealloc server is a implemented as a small Twisted application (source) which serves the tac generator, a JSON REST interface, and a client-side JavaScript interface.

The same source code also implements a command-line frontend to the REST interface.

Requirements

Deployment

External Resources

Security

The slave allocator hands out low-security slave passwords in the .tac files, which are stored in cleartext in the database. It does not do any sort of authentication either for read or modify operations, and relies on the Build VLAN firewalls to prevent external access.

Development

Install tools in a virtualenv:

cd tools
virtualenv sandbox
sandbox/bin/pip install -e .

Then you can run the slavealloc daemon locally from the root of the tools repository with a simple:

sandbox/bin/twistd -noy slavealloc-combined.tac

Note that due to what I believe to be a bug in pip, you may need to explicitly install Twisted to get the twistd executable installed:

pip install -U twisted

This configuration will use SQLite to access {{{slavealloc.db}}} in the current directory. You can hack on the static web content while the daemon is running.

See Also

See User:Djmitche/Slave Allocator Proposal

regression detection

code is http://hg.mozilla.org/graphs/file/9c02347596b4/server/analysis

runs on cruncher via cronjob under catlee's account from ~/graphs/server/analysis

deployment questions

  • what languages are needed and their version
    • if python, what python modules - can they be run in a virtualenv
    • if perl, what cpan modules are needed
    • if php, what php version and what php.ini entries are needed
  • what is the command line parameters to start the web service
  • does it have any special configuration or init files
  • does it require root or sudo
  • does it require a special directory layout
  • will it generate/use temp files or non-database assets?
  • what version of mysql and what database config, where is the sql to init the tables
  • does memcached have a min/max memory? which processes read/write to it - can it be on different IP
  • what ports will be opened for listening
  • cronjobs that need to be run
  • if outside services are utilized, what is that list

maintenance questions

  • what are common issues we run into, and how to debug?
    • place in buildduty docs?
  • where is the code/schema for hacking/reading?
  • are there special passwords/accounts/acl's, and what are they? (not in public docs)