Difference between revisions of "Documentation/4.1/Developers/Tutorials/DashboardSetup"

From Slicer Wiki
Jump to: navigation, search
(Prepend documentation/versioncheck template. See http://na-mic.org/Mantis/view.php?id=2887)
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
<noinclude>{{documentation/versioncheck}}</noinclude>
 
=Prerequisites=
 
=Prerequisites=
  
Line 37: Line 38:
  
 
<pre>
 
<pre>
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
+
0 23 * * * /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
 
</pre>
 
</pre>
  
Line 100: Line 101:
  
 
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.
 
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.
 +
 +
 +
==Scheduling on Windows==
 +
 +
===Create a .bat file that performs the build===
 +
 +
For example, a clean nightly build can be performed by a batch file like this:
 +
<pre>
 +
rmdir /S /Q c:\SAB\Slicer-build-64bit-nightly
 +
"c:\Program Files (x86)\CMake 2.8\bin\ctest.exe" -S .\Windows7-64bits_Slicer_Release_Nightly.cmake -VV c:\SAB\Logs\Windows7-64bits_Slicer_Release_Nightly.log -C Release
 +
</pre>
 +
 +
===Create a new scheduled task that runs the .bat file===
 +
* Windows XP: Create a new scheduled task at Control Panel / Scheduled Tasks / Add Scheduled
 +
* Windows 7: Task scheduler can be found at Start Menu / All Programs / Accessories / System Tools / Task Scheduler.
  
 
==Setting up a continuous dashboard==
 
==Setting up a continuous dashboard==
Line 128: Line 144:
 
If you're using an interface for version control such as TortoiseSVN, make sure in the Icon Overlay settings that the status cache is set to None.
 
If you're using an interface for version control such as TortoiseSVN, make sure in the Icon Overlay settings that the status cache is set to None.
 
[[Image:TortoiseGit.png|thumb|300px|Make sure the status cache is set to "None."]]
 
[[Image:TortoiseGit.png|thumb|300px|Make sure the status cache is set to "None."]]
 +
 +
Keep the paths to your Nightly, Continuous, and Experimental directories as terse as possible.  A good standard is C:\D for dashboards, and C:\D\<N,C,E> subdirectories for Nightly, Continuous, and Experimental.  Otherwise, CMake will choke on the paths.
 +
 
==Lockhunter==
 
==Lockhunter==
 
Often on Windows, once a dashboard build is started, it is impossible to delete anything from the source or build directory.  Windows will report that this file is currently in use by another program, or "locking" it.  For this, we recommend installing [http://www.lockhunter.com Lockhunter].
 
Often on Windows, once a dashboard build is started, it is impossible to delete anything from the source or build directory.  Windows will report that this file is currently in use by another program, or "locking" it.  For this, we recommend installing [http://www.lockhunter.com Lockhunter].
 
[[Image:LockHunderExample.png|thumb|left|300px| Lockhunter screenshot]]
 
[[Image:LockHunderExample.png|thumb|left|300px| Lockhunter screenshot]]

Latest revision as of 07:24, 14 June 2013

Home < Documentation < 4.1 < Developers < Tutorials < DashboardSetup


For the latest Slicer documentation, visit the read-the-docs.


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 23 * * * /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.


Scheduling on Windows

Create a .bat file that performs the build

For example, a clean nightly build can be performed by a batch file like this:

rmdir /S /Q c:\SAB\Slicer-build-64bit-nightly
"c:\Program Files (x86)\CMake 2.8\bin\ctest.exe" -S .\Windows7-64bits_Slicer_Release_Nightly.cmake -VV c:\SAB\Logs\Windows7-64bits_Slicer_Release_Nightly.log -C Release

Create a new scheduled task that runs the .bat file

  • Windows XP: Create a new scheduled task at Control Panel / Scheduled Tasks / Add Scheduled
  • Windows 7: Task scheduler can be found at Start Menu / All Programs / Accessories / System Tools / Task Scheduler.

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.

Remarks

Setting up a dashboard on a Windows machine

If you're using an interface for version control such as TortoiseSVN, make sure in the Icon Overlay settings that the status cache is set to None.

Make sure the status cache is set to "None."

Keep the paths to your Nightly, Continuous, and Experimental directories as terse as possible. A good standard is C:\D for dashboards, and C:\D\<N,C,E> subdirectories for Nightly, Continuous, and Experimental. Otherwise, CMake will choke on the paths.

Lockhunter

Often on Windows, once a dashboard build is started, it is impossible to delete anything from the source or build directory. Windows will report that this file is currently in use by another program, or "locking" it. For this, we recommend installing Lockhunter.

Lockhunter screenshot