Documentation/4.1/Developers/Tutorials/DashboardSetup
Contents
Prerequisites
Use CMake version >= 2.8.8
Setup
Follow the following instructions to set up dashboard: (by JC, from [1])
$ cd ~ $ mkdir Dashboards $ mkdir DashboardScripts $ cd DashboardScripts $ wget http://svn.slicer.org/Slicer4/trunk/CMake/SlicerDashboardScript.TEMPLATE.cmake $ mv SlicerDashboardScript.TEMPLATE.cmake <MachineName>_<OperatingSystem>-64bits_slicer_release_nightly.cmake
Edit the file <MachineName>_<OperatingSystem>-64bits_slicer_release_nightly.cmake
to match
your machine settings. You should update the following variables:
set(MY_OPERATING_SYSTEM "<OperatingSystem>") # Windows, Linux, Darwin... set(MY_COMPILER "g++4.4.3") set(MY_QT_VERSION "4.7.4") set(QT_QMAKE_EXECUTABLE "$ENV{HOME}/Projects/QtSDK-1.2/Desktop/Qt/474/gcc/bin/qmake") set(CTEST_SITE "karakoram.kitware") set(CTEST_DASHBOARD_ROOT "$ENV{HOME}/Dashboards/") ... set(CTEST_BUILD_CONFIGURATION "Release") ... set(SCRIPT_MODE "nightly")
If git and svn are not in the path, make sure to set the variables CTEST_SVN_COMMAND and CTEST_GIT_COMMAND.
So that your dashboard can automatically start at 11pm daily, you could add an entry similar to the following one in your crontab
. (On ubuntu, I am running crontab -e
to edit the current user cron list)
0 11 * * * /path/to/cmake-2.8.7/bin/ctest -S /Users/JOE/DashboardScripts/<MachineName>_<OperatingSystem>-64bits_slicer_release_nightly.cmake -VV -O /Users/JOE/Dashboards/Logs/<MachineName>-<OperatingSystem>-64bits_slicer_release_nightly.log
You can use CTEST_BUILD_FLAGS
to set the number of CPUs to be used by make (eg, -j4), and CTEST_PARALLEL_LEVEL to set the number of tests to run in parallel (see comments in the configuration script).
Scheduling on Mac OS X
Mac OS X is deprecating the use of cron in favor of launchd.
Create a file $HOME/Library/LaunchAgents/org.slicer.NightlyDashboard.plist
This is Jim's plist file which has extra EnvironmentVariables to get through his firewall.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>org.slicer.NightlyDashboard</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/ctest</string> <string>-S</string> <string>/Users/millerjv/Projects/Slicer4-Dashboard/SlicerDashboardScript.cmake</string> </array> <key>EnvironmentVariables</key> <dict> <key>ALL_PROXY</key> <string>proxy.research.ge.com:8080</string> <key>http_proxy</key> <string>proxy.research.ge.com:8080</string> <key>RSYNC_PROXY</key> <string>proxy.research.ge.com:8080</string> </dict> <key>Nice</key> <integer>1</integer> <key>StartCalendarInterval</key> <dict> <key>Hour</key> <integer>1</integer> <key>Minute</key> <integer>03</integer> </dict> <key>StandardErrorPath</key> <string>/tmp/org.slicer.NightlyDashboard.err</string> <key>StandardOutPath</key> <string>/tmp/org.slicer.NightlyDashboard.out</string> </dict> </plist>
You can manually load this agent using
$ launchctl load $HOME/Library/LaunchAgents/org.slicer.NightlyDashboard.plist
and the agent will be reloaded automatically on a reboot.
It seems I have to be logged onto the console for the launch agent to get installed and run. What I do is log on, then select "Login Window..." so that other people can log onto the console. This is suboptimal as I need to do this after each reboot of the system.
Setting up a continuous dashboard
Similarly if you want to setup a continuous dashboard,
$ cp <MachineName>_<OperatingSystem>-64bits_slicer_release_nightly.cmake <MachineName>_<OperatingSystem>-64bits_slicer_release_continuous.cmake
Edit <MachineName>_<OperatingSystem>-64bits_slicer_release_continuous.cmake
and set
set(SCRIPT_MODE "*continuous*")
Then add the corresponding entry in crontab
so that it starts everyday at 6am:
0 6 * * * /path/to/cmake-2.8.7/bin/ctest -S /Users/JOE/DashboardScripts/<MachineName>_<OperatingSystem>-64bits_slicer_release_continuous.cmake -VV -O /Users/JOE/Dashboards/Logs/<MachineName>_<OperatingSystem>-64bits_slicer_release_nightly.log
The output of the build is contained in ctest_package_make_package_output.txt
in your slicer build directory, you can check this file if something went wrong.