ReleaseEngineering/PuppetAgain/Modules/buildmaster

From MozillaWiki
Jump to: navigation, search

Buildmasters

This module installs and sets up the buildmaster software. Multiple buildmasters can be installed on the same node. This module supports two different styles of masters, "Mozilla", and "Simple". More detailed descriptions of both are below.

Facts

num_masters
The number of masters configured on this host. Note that because the number of masters is determined by other puppet settings, the value of this fact will lag behind reality by one puppet run. That is, if a puppet run adds a new master to the 2 already present, the $num_masters fact will be 2, not 3, during that run.

Secrets

These secrets are common to the different types of masters:

buildbot_schedulerdb_username
buildbot_schedulerdb_password
buildbot_schedulerdb_hostname
buildbot_schedulerdb_database
credentials for the Buildbot database

"Mozilla" buildmasters

Mozilla buildmasters are special because they are set-up using external scripts to do some of the the work. To set up a node as Mozilla buildmaster node, use the following snippet in the nodes definition. (configuration should not be in nodes.pp there is already bug 848824 for this.)

 node "relabs07.build.mtv1.mozilla.com" {
       buildmaster::buildbot_master::mozilla {
           "bm07-build1":
           http_port => 8001,
           master_type => "build",
           basedir => "build1";
       }
       buildmaster::buildbot_master::mozilla {
           "bm07-build2":
           http_port => 8002,
           master_type => "build",
           basedir => "build2";
       }
       include toplevel::server::buildmaster

Masters can be one of the following:

  • build
  • scheduler
  • try
  • tests

Masters will be installed in:

  /builds/buildbot/${basedir}

Secrets

This module fills in BuildSlaves.py, postrun.cfg, and passwords.py with a bunch of secrets used to communicate with other services:

blobber_password
blobber_username
Username and password used to communicate with Blobber
jetperf_oauth_key
jetperf_oauth_secret
talos_oauth_key
talos_oauth_secret
datazilla authentication tokens
android_tests_password
linux_tests_password
mac_tests_password
win_tests_password
prod_build_password
try_build_password
Buildbot slave passwords, per slave type
balrog_credentials
Balrog credentials - key/value pairs
tuxedo_password
tuxedo_username
tuxedo credentials
pulse_exchange
pulse_username
pulse_password
AMQP credentials for access to http://pulse.mozilla.org
buildbot_statusdb_username
buildbot_statusdb_password
buildbot_statusdb_hostname
buildbot_statusdb_database
credentials for the status database
signing_server_dep_password
signing_server_nightly_password
signing_server_release_password
signing_server_username
signing server credentials, per build type
buildmaster_ssh_key_*
SSH keys that will be placed on buildmasters; see the buildmaster_ssh_keys configuration option.

servo buildmasters

Servo buildmasters are fully setup by Puppet. Instantiation usually should happen in a toplevel class using a snippet like:

buildmaster::buildbot_master::servo {
    "servo1":
        basedir => "/builds/buildbot/servo1",
        http_port => 8001,
        master_cfg => "puppet:///modules/buildmaster/servo/master.cfg";
}

"buildbot_version" can also be passed to install an alternative version of Buildbot.

Secrets

This uses the following secrets:

servo_slave_password
Buildbot slave password