Jenkins CI example

Create a parameterized job with the following parameters:

  • CTEST_TARGET_SYSTEM - choice parameter;
  • CTEST_MODEL - choice parameter;
  • CTEST_COMMAND_ARGS - string parameter.

Add repository checkout step to $WORKSPACE/project directory.

Add shell step to build section with the following content:

mkdir -p $WORKSPACE/$CTEST_TARGET_SYSTEM/$CTEST_MODEL
rm -rf $WORKSPACE/$CTEST_TARGET_SYSTEM/$CTEST_MODEL/build/Testing

cat > $CTEST_TARGET_SYSTEM/$CTEST_MODEL/project_jenkins_test.cmake << EOF
    include("$WORKSPACE/ctest_ext.cmake")

    set(CTEST_TARGET_SYSTEM     "$CTEST_TARGET_SYSTEM")
    set(CTEST_MODEL             "$CTEST_MODEL")

    set(CTEST_DASHBOARD_ROOT    "$WORKSPACE/$CTEST_TARGET_SYSTEM/$CTEST_MODEL")
    set(CTEST_SOURCE_DIRECTORY  "$WORKSPACE/project")
    set(CTEST_BINARY_DIRECTORY  "${CTEST_DASHBOARD_ROOT}/build")

    set(CTEST_WITH_UPDATE       FALSE)

    if(CTEST_TARGET_SYSTEM MATCHES "Android")
        add_cmake_cache_entry("ANDROID_NDK" TYPE "PATH" "/opt/android-ndk-r10")
        add_cmake_cache_entry("ANDROID_EXECUTABLE" TYPE "FILEPATH" "/opt/android-sdk-linux/tools/android")
    endif()

    include("\${CTEST_SOURCE_DIRECTORY}/project_test.cmake")
EOF

ctest -VV -S $WORKSPACE/$CTEST_TARGET_SYSTEM/$CTEST_MODEL/project_jenkins_test.cmake $CTEST_COMMAND_ARGS

Add xUnit publisher for CTest with the following pattern:

$CTEST_TARGET_SYSTEM/$CTEST_MODEL/build/Testing/**/Test.xml