Worker for qa.drupal.org
This project contains the make files for building workers used by qa.drupal.org. The project is intended to be used with Drush make.
In order to build out to codebase for a qa.drupal.org worker perform the following.
$ drush make --yes https://raw.github.com/boombatower/drupalorg_qa_worker/7.x-1.x/[WORKER_TYPE].make
All the available worker types are listed below.
$ drush make --yes https://raw.github.com/boombatower/drupalorg_qa_worker/7.x-1.x/worker.make
$ drush make --yes https://raw.github.com/boombatower/drupalorg_qa_worker/7.x-1.x/worker_drupal.make
Otherwise, you can obtain the drupal.make file via another method. If you want a working-copy (aka one that has git checkouts of the applicable projects) you can add --working-copy
as shown below. In addition, --no-gitinfofile
is handy since it does not alter the .info files which will make it more difficult to commit changes.
$ drush make --working-copy --no-gitinfofile --yes https://raw.github.com/boombatower/drupalorg_qa_worker/7.x-1.x/worker.make
Next the worker can be installed by executing the following (assuming access to SQLite) or setting up a database and changing the command. Please note that the Drupal installation for the worker does not need to be accessible from the web.
$ drush si minimal --yes --site-name='Worker' --account-name=worker --account-pass=worker --db-url=sqlite:sites/default/files/.ht.sqlite
$ drush en --yes worker [WORKER_TYPE] # enable WORKER_TYPE if applicable
If the worker type requires a separate database to be configured add something like the following to settings.php
.
<?php
// Database that Drupal will be installed in. This database is dropped and
// created every job run using the stub database as a connection.
$databases['drupal_mysql'] = array(
'default' => array(
'database' => '',
'username' => '',
'password' => '',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
);
// Stub database used to make a connection using the appropriate driver. This
// database must be created manually and will not be created or destroyed.
$databases['drupal_mysql_stub'] = $databases['drupal_mysql'];
$databases['drupal_mysql_stub']['default']['database'] .= '_stub';
All workers will need the following settings added to settings.php
. The category is conduit
for worker.make
and worker_[CATEGORY].make
for any other. The concurrency is the maximum number of process to create at any given time, which should be based off the hardware being used by the worker.
<?php
$conf['worker_url'] = 'http://example.com/conduit';
$conf['worker_login'] = array(
'username' => 'worker',
'password' => 'worker',
);
$conf['worker_category'] = 'conduit';
$conf['worker_concurrency'] = 4;
The worker needs a consistent way to refer to the "embedded" Drupal installation that runs SimpleTest. To accomplish this, we decided to:
- set the JOB_URL constant to "worker.loc" in job.inc
- add an entry for "worker.loc" in /etc/hosts
- create a virtual host entry for "worker.loc" as follows
In this case /srv/www/htdocs/
points to the Drupal root of the worker so /srv/www/htdocs/sites/default/files/job
points to the directory in which the embedded Drupal will be located.
<VirtualHost *>
ServerName worker.loc
ServerAlias *.worker.loc
ServerAdmin root@site.loc
ErrorLog /dev/null
CustomLog /dev/null combined
DocumentRoot /srv/www/htdocs/sites/default/files/job
<Directory /srv/www/htdocs/sites/default/files/job>
AllowOverride FileInfo AuthConfig Limit Indexes Options=All,MultiViews
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Order allow,deny
Allow from all
</Directory>
</VirtualHost>