Documentation/4.1/Developers/Factory
Overview
The Slicer factory machine is maintained by Kitware and produces dashboard builds of many software projects, including nightly, continuous, and packaged versions of Slicer and its approved extensions. See the Slicer4 dashboard.
These builds are generated every day on three different operating systems: Windows 7, Mac OS X, and Linux. Because it is not legal to run any version of Mac OS X on a virtual machine (unless its host also runs Mac OS X), the host OS is Mac OS X, and the Windows and Linux builds are run within this machine as virtual machines.
Required factory components
Host
The factory machine runs Mac OS X v10.6.8, Snow Leopard.
- CMake version: 2.8.8
- GCC version: i686-apple-darwin10-gcc-4.2.1
- Tasks scheduled using cron
The output of
crontab -l
on the factory machine is as follows:
55 23 * * * cd /Users/kitware/DashboardScripts && /usr/bin/cvs -q up -dAP 0 0 * * * /Users/kitware/DashboardScripts/factory.sh > /Users/kitware/Dashboards/Logs/factory.log 2>&1 0 9 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_CTKAppLauncher_release_continuous.cmake > /Users/kitware/Dashboards/Logs/factory-64bits_CTKAppLauncher_release_continuous.log 2>&1 0 9 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicer4_release_continuous.cmake > /Users/kitware/Dashboards/Logs/factory-64bits_slicer4_release_continuous.log 2>&1 0 10 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicerextensions_release_continuous.cmake > /Users/kitware/Dashboards/Logs/factory-64bits_slicerextensions_release_continuous.log 2>&1 0 10 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicerextensions_411_release_continuous.cmake > /Users/kitware/Dashboards/Logs/factory-64bits_slicerextensions_411_release_continuous.log 2>&1
The first tab is a command to update the cvs repository storing all of Kitware's dashboard scripts. The second is a bash script which runs all of the nightly builds done by the Mac OS X factory. An example of an entry in this script is as follows:
open -a x11 export DISPLAY=:0.0 # just DISPLAY=:0.0 without export is not enough export PATH=:/usr/local/git/bin:$PATH CTEST=/Applications/CMake\ 2.8-8.app/Contents/bin/ctest LOG_DIR=/Users/kitware/Dashboards/Logs DASHBOARD_SCRIPTS_DIR=/Users/kitware/DashboardScripts # Nightly build of CTKAppLauncher "$CTEST" -S $DASHBOARD_SCRIPTS_DIR/factory-64bits_CTKAppLauncher_release_nightly.cmake -VV -O $LOG_DIR/factory-64bits_CTKAppLauncher_release_nightly.log # Nightly build of slicer "$CTEST" -S $DASHBOARD_SCRIPTS_DIR/factory-64bits_slicer4_release_nightly.cmake -VV -O $LOG_DIR/factory-64bits_slicer4_release_nightly.log
The virtual machines are run using the Parallels tool.
VM: Ubuntu
- CMake version: 2.8.8
- GCC version: Ubuntu 4.4.3-4ubuntu5.1
- Tasks scheduled using cron
VM: Windows 7
On Windows, instead of bash, we use batch scripts comprised of commands to call ctest to run all the nightly scripts. factory-win7.bat looks like this:
#REM Nightly build of CTKAppLauncher vs2008 32bits "C:\D\Support\cmake-2.8.8-win32-x86\bin\ctest.exe" -S "C:\Dashboards\DashboardScripts\factory-win7-vs2008-32bits_CTKAppLauncher_release_nightly.cmake" -C Release -VV -O C:\D\Logs\factory-win7-vs2008-32bits_CTKAppLauncher_release_nightly.txt #REM Nightly build of slicer vs2008 32bits "C:\D\Support\cmake-2.8.8-win32-x86\bin\ctest.exe" -S "C:\Dashboards\DashboardScripts\factory-win7-vs2008-32bits_slicer4_release_nightly.cmake" -C Release -VV -O C:\D\Logs\factory-win7-vs2008-32bits_slicer4_release_nightly.txt #REM Nightly build of slicer extensions testing vs2008 32bits "C:\D\Support\cmake-2.8.8-win32-x86\bin\ctest.exe" -S "C:\Dashboards\DashboardScripts\factory-win7-vs2008-32bits_slicerextensions_testing_release_nightly.cmake" -C Release -VV -O C:\D\Logs\factory-win7-vs2008-32bits_slicerextensions_testing_release_nightly.txt
Note that in this case, the -C option is required to specify the build type.
Also, keep in mind the remarks about building a dashboard on a Windows machine. These all apply here.