Version 4 (modified by Sukender, 6 years ago)

Added a little comment for MSVC cron.

Reporting builds to the OpenSceneGraph public Dashboard

Foreword

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).

OpenSceneGraph Dashboards

Access to the OpenSceneGraph Dashboards. There are four build groups per day :

  • Nightly Builds : for builds that are made every night for the trunk.
  • Nightly 2.6 Builds : for builds that are made every night for the branch 2.6.
  • 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 public dasboard

You 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 [osg 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

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 primarly meant to be used by cron jobs to automatically check the builds on different platforms.

UNIX/Linux

For example on a unix machine you could have a shell script (osgBuild.sh) like this :

#!/bin/sh

#go where my current osg cmake generated files are
cd $OSG_DIR/build

#this is due to a bug, the process extracts information from the svn output which needs to be in english
export LC_MESSAGES=en_GB

#do the actual work
make -j -l 2.0 $1

You would then only need to add one line in your crontab :

@midnight /path/to/osgBuild.sh Nightly

MSVC

Using Visual C++, you we have something similar. Please note there are Visual C++ environment variables to set up; this is done by calling vcvarsall.bat (C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat, for instance). So, create a shell script (osgBuild.cmd) like this :

call "C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat"
devenv "%OSG_DIR%\OpenSceneGraph.sln" /build Release /project %1%
  • Replace "devenv" with "vcexpress" if you want to use a MSVC Express version.
  • Be sure to have the %OSG_DIR% environment variable, or replace with a full path.
  • 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 not that "Release" corresponds to the solution configuration.
  • Also note that the Visual IDE won't appear. It will simply run in background.

This batch can then be added to your "Scheduled tasks" (In the config panel), with the "Execute" filed set to:

"C:\PATH_TO_MY_SCRIPT\osgBuild.cmd" Nightly

NMake

TODO: explain using NMake and schedule tasks under windows

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.

UNIX/Linux

For example under unix, assuming you still have the shell script used in the previous section, you would only need to add another line in your crontab :

@hourly  /path/to/osgBuild.sh Continuous

MSVC

As for the Nightly builds, your scheduled task's "Execute" filed is set to:

"C:\PATH_TO_MY_SCRIPT\osgBuild.cmd" Continuous

NMake

TODO: explain using NMake and schedule tasks under windows

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 usefull, but maybe only for testing purposes or reporting specific issues maybe.

On unix :

make Experimental

With MSVC, just select the "Experimental" project and build it.

Nightly 2.6

This is an non default track for CDash submissions. Since it is not a default one. It doesn't seem to be available directly from make of IDEs. In order to report Nightly builds for the 2.6 branch, one should have their local repository of the source code checked out from the branch :

svn co http://www.openscenegraph.org/svn/osg/OpenSceneGraph/branches/OpenSceneGraph-2.6 OpenSceneGraph

Then after having configured the project correctly, you need to launch this command :

ctest -D Nightly --track Nightly-2.6