[CMake] CTest/CDash and miscellaneous post-build steps (was Re: continuous integration with CMake)

Tyler Roscoe tyler at cryptio.net
Wed Feb 17 16:58:18 EST 2010


Next question:

- CDash and miscellaneous post-build steps

Now that I've got Continuous Integration up and running with CDash, I'd
like to publish my Continuous builds to a central build archive so
developers and testers can use them.

I can write post-build rules to copy my _results directory to the build
archive (or mess with CMAKE_INSTALL_PREFIX and the INSTALL target), but
then the build will be copied as soon as compiling/linking are finished.
I would prefer to run the tests first and only copy the build if it
passes all the tests.

I thought of doing the copy from my continuous integration script
itself. I could copy after a successful build by making use of the
NUMBER_ERRORS and NUMBER_WARNINGS parameters to ctest_build(). I was
hoping I could do the same after ctest_test(), but that command doesn't
seem to have anything like NUMBER_ERRORS that would let me evaluate if
the tests completed successfully before performing the copy.

How do other people handle this?

I'd like to do more than just publish the builds (run the setup.exe and
make sure it works, compare what is installed by setup.exe against a
known-good install manifest, kick off component tests on another machine
with this newly-generated build, etc.) but figuring out a method for
publishing builds would be a great start.

Thanks,
tyler

On Fri, Dec 04, 2009 at 01:07:23PM -0500, Bill Hoffman wrote:
> Tyler Roscoe wrote:
> The build scripts for CMake can be found on CDash itself, for example:
> 
> http://www.cdash.org/CDash/viewNotes.php?buildid=485762
> 
> For each dashboard on the CMake dashboard if you click on the notes for 
> the build you can see the script that was used to drive the build.
> 
> Here is the .bat file that is run for a scheduled task on that machine:
> 
> 
> $ cat dash2win64.bat
> setlocal
> rem Update clapack driver script from clapck
> pushd c:\Dashboards\clapack
> svn up clapack_build.cmake
> rem Run the clapack driver script
> "c:\Program Files (x86)\CMake 2.8\bin\ctest.exe" -C Release -S 
> clapack_build.cmake -VV -O clapack.log
> popd
> endlocal
> 
> call C:\cygwin\bin\bash.exe --login 
> c:/Dashboards/DashboardScripts/dash2win64cygwin.sh
> 
> "c:\Program Files (x86)\CMake 2.8\bin\ctest.exe" -C Release -S 
> dash2Win64_cmake_vs10.cmake -O cmake_vs10.log
> "c:\Program Files (x86)\CMake 2.8\bin\ctest.exe" -C Release -S 
> dash2Win64_cmake_vs10_x64.cmake -O cmake_vs10_x64.log
> 
> setlocal
> call "C:\Program Files (x86)\Microsoft Visual Studio 
> 10.0\VC\bin\vcvars32.bat"
> "c:\Program Files (x86)\CMake 2.8\bin\ctest.exe" -C Release -S 
> dash2Win64_cmake_nmake10.cmake -O cmake_nmake10.log
> endlocal
> 
> setlocal
> call "C:\Program Files (x86)\Microsoft Visual Studio 
> 10.0\VC\bin\amd64\vcvars64.bat"
> "c:\Program Files (x86)\CMake 2.8\bin\ctest.exe" -C Release -S 
> dash2Win64_cmake_nmake10_x64.cmake -O cmake_nmake10_x64.log
> endlocal
> 
> "c:\Program Files (x86)\CMake 2.8\bin\ctest.exe" -C Release -S 
> dash2win64_libarchive_vs9.cmake -VV > libarchive_vs9.log 2>&1
> "c:\Program Files (x86)\CMake 2.9\bin\ctest.exe" -C Release -S 
> dash2win64_cmake_icl11_32.cmake -VV > cmake_icl11_32.log 2>&1
> "c:\Program Files (x86)\CMake 2.9\bin\ctest.exe" -C Release -S 
> dash2win64_cmake_icl11_64.cmake -VV > cmake_icl11_64.log 2>&1


More information about the CMake mailing list