Version 9 (modified by bthrall, 5 years ago)

--

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 dashboard

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 primarily 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 "%VS80COMNTOOLS%vsvars32.bat"
devenv "%OSG_DIR%\OpenSceneGraph.sln" /build Release /project %1%
  • 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.
  • 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

Be aware that Windows "Scheduled tasks" won't start "missed" tasks (if the computer was turned off) when the computer goes on. You can be notified of missed tasks ("Advanced" menu), or install a software that does it automatically (such as Xecutor, or other).

Also note that the 'at' command is still there, but deprecated by the above:

at 00:00 /EVERY:M,T,W,Th,F,S,Su "C:\PATH_TO_MY_SCRIPT\osgBuild.cmd Nightly"

NMake

As with MSVC there are Visual C++ environment variables to set up. Create a shell script (osgBuild.cmd) like this :

call "%VS80COMNTOOLS%vsvars32.bat"

cd "%OSG_DIR%\build-nmake"
nmake %1%
  • Replace "VS80COMNTOOLS" with "VS90COMNTOOLS" if you have Visual Studio 2008.
  • Be sure to have the %OSG_DIR% environment variable, or replace with a full path.
  • "build-nmake" is where I have my binary tree, replace with your setting.

To automate building see above under MSVC.

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 and NMake

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

"C:\PATH_TO_MY_SCRIPT\osgBuild.cmd" Continuous

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.

On unix :

make Experimental

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

With nmake :

nmake Experimental

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

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: