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>&1and 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