NeL Dashboard
You can view the NeL Build Dashboard here
Summary
From CDash web site:
CDash is an open source, web-based software testing server. CDash aggregates, analyzes and displays the results of software testing processes submitted from clients located around the world. Developers depend on CDash to convey the state of a software system, and to continually improve its quality. CDash is a part of a larger software process that integrates Kitware's CMake, CTest, and CPack tools, as well as other external packages used to design, manage and maintain large-scale software systems. Good examples of a CDash are the CMake quality dashboard and the VTK quality dashboard.
Kitware Inc. recently made available some public dashboards.
CMake provides means to publish on these dashboards results of compilations + tests, coverage of the tests, and dynamic analysis (memory leaks).
NeL Build Dashboards
Access to the NeL Build Dashboards. There are three build groups per day :
- Nightly Builds : for builds that are made every night for the trunk.
- Continuous Builds : for builds that are submitted each time a commit is made.
- Experimental Builds : for experimental build (testing too maybe).
There are also two other groups :
- Coverage : for coverage testings (gcov and bullseye are currently supported as coverage tools).
- Dynamic Analysis: valgrind report are supported.
How To Publish To The Dashboard
First you will nou need to enable dashboard reporting. There is an option in the CMakeLists.txt called BUILD_DASHBOARD_REPORTS that makes all the automatic configuration steps. Command line example:
cmake -DBUILD_DASHBOARD_REPORTS=ON [nel source dir]
This should give you new targets if you are using Makefiles or new Projects if you are using Visual Studio:
- Nightly
- Continuous
- Experimental
NeL provides a shell script called nelDashBuild.sh and a batch file called nelDashBuild.cmd to help ease the automation of dashboard reporting on new systems. Both scripts take two arguments:
- The name of the build target (Nightly, Continuous or Experimental).
- The path to the source code.
They also assume that you will be building out of source in a sub-directory of the source path called "build," for example:
/home/me/code/nel/build
For Windows (MSVC) compilers you may need to make some minor tweaks depending upon your version of Visual Studio:
- Replace "VS80COMNTOOLS" with "VS90COMNTOOLS" if you have Visual Studio 2008, or simply insert a full path (such as call "C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat").
- Replace "devenv" with "vcexpress" if you want to use a MSVC Express version.
- You also may want to replace "/build" by "/rebuild" to do a complete cleanup before compiling (that would take much more time of course). See http://msdn.microsoft.com/en-us/library/xee0c8y7.aspx for information on command line parameters for devenv/vcexpress.
- Please note that "Release" corresponds to the solution configuration. You may also change this to "Debug"
- Also note that the Visual IDE won't appear. It will simply run in background.
Nightly
This target is used to report builds on the source code that is present at 00:00 CET of the current day. For example if you are using this target at 13:00 CET the source code will be update (as in svn update) to match the source code status at 00:00 CET in the repository, even if there are some commits after that and you had updated you local copy with those.
Nightly will update your local copy of the source code to the version available in the repository of the current day at 00:00 CET
This target is primarily meant to be used by cron jobs to automatically check the builds on different platforms.
Running on Unix/Linux
Add the following entry into your crontab:
@midnight /path/to/nelDashBuild.sh Nightly /path/to/nel
Running on Windows (MSVC)
The nelDashBuild.cmd batch can then be added to your "Scheduled Tasks" (in the Control Panel), by choosing Daily and setting the "Execute" field set to:
c:\path\to\nel\nelDashBuild.cmd Nightly c:\path\to\nel
Be aware that Windows "Scheduled Tasks" will not start "missed" tasks in situations such as if the computer was turned off. You configure it so that you are notified of missed tasks ("Advanced" menu), or install a piece software that does it automatically (such as Xecutor).
Continuous
This target is used to launch and report builds as soon as the repository source code gets updated. It will update your local copy of the source code to the latest revision available in the subversion repository and launch a build process if there were some updates.
Running on Unix/Linux
Add the following entry into your crontab:
@hourly /path/to/nelDashBuild.sh Continuous /path/to/nel
Running on Windows (MSVC)
The nelDashBuild.cmd batch can then be added to your "Scheduled Tasks" (in the Control Panel), by choosing Daily and setting the "Execute" field set to:
c:\path\to\nel\nelDashBuild.cmd Continuous c:\path\to\nel
Once you have completed the wizard open the properties of the Scheduled Task, change to the Schedule tab, and click the Advanced button.
In here check Repeat Task, set Every to 1, and the duration drop-down to "hours." Set "Until" to Time and choose 11:59pm.
Experimental
This target is used to launch and report an Experimental build. It won't do any check of the current status of the source code repository or if you have any local changes. It can be useful, but maybe only for testing purposes or reporting specific issues maybe.
Running on Unix/Linux
If you're using Makefiles you simply need to build the Experimental target. This target is not intended to be automated.
Running on Windows (MSVC)
Since this target is not intended to be automated you merely need to build the Experimental project and it will compile, run the test and publish the results.
Subversion clients on Windows
The Nightly and Continuous builds uses Subversion to update the repository. As described above Continuous does svn update and Nightly get the revision from 00:00 today. This is commenced using the SVNCOMMAND CMake variable. If you have a "regular" subversion client, i.e. you have svn.exe, make sure SVNCOMMAND points to it.
Some subversion clients for Windows, typically TortoiseSVN, integrates with explorer and don't provide a svn.exe that you can point SVNCOMMAND to. Then you need to create a bat script that uses your svn clients command-line to issue the correct svn command and returns the correct value (i.e. 0 means success) or download a regular subversion client (recommended).
There are "regular" subversion clients available to download. See:
- Binary packages/installers at tigris.org
- Subversion package by CollabNet
- http://subversion.tigris.org/links.html#clients
- http://en.wikipedia.org/wiki/Comparison_of_Subversion_clients
Thanks
Special thanks to the CMake fellows for putting this together and the Open Scene Graph people for having good documentation on Trac.