Here's the entire chain of code used to set up auto-rebuilding servers on test.openacs.org
The master server shows the status of all other servers. For test.openacs.org, it listens on port 80.
The acs-automated-testing parameter IsInstallReportServer is set to 1
The acs-automated-testing parameter XMLReportDir is set to /var/log/openacs-install. This is arbitrary - it just needs to be somewhere all the servers can write to.
For each server that will be monitored:
Suppose the first test server is service1. Set up a dedicated user and automated install script.
To run automated testing automatically each time the server is rebuilt, add this to /home/service1/install/install.tcl:
set do_tclapi_testing "yes"
Get the results of the automated tests dumped where the master server can see them - in this example, the same directory as above, /var/log/openacs-install, by adding this to install.tcl (requires 5.1):
set install_xml_file "/var/lib/aolserver/service0/packages/acs-core-docs/www/files/install-autotest.xml"
This will copy in the file install-autotest.xml:
<?xml version="1.0"?> <!-- This is an install.xml which can be used to configure servers for reporting their automated test results. Requires acs-automated-testing 5.1.0b2 or better --> <application name="acs-automated-testing" pretty-name="Automated Testing" home="http://openacs.org/"> <actions> <set-parameter package="acs-automated-testing" name="XMLReportDir" value="/var/log/openacs-install"/> </actions> </application>
which will, during install, configure that parameter in acs-automated-testing on the monitored server.
To enable the 'rebuild server' link, edit the file /usr/local/bin/rebuild-server.sh:
#!/bin/sh # script to trigger a server rebuild # hard-coding the valid server names here for some minimal security case $1 in service1) ;; service2) ;; *) echo "Usage: $0 servername" exit;; esac sudo /home/$1/install/install.sh 2>&1
and allow the master user to execute this file as root (this is a limitation of the automatic install script, which must be root). In /etc/sudoers, include a line:
master ALL = NOPASSWD: /usr/local/bin/rebuild-server.sh