Loading .circleci/circleci.cmake 0 → 100644 +99 −0 Original line number Diff line number Diff line # set_from_env # ------------ # # Sets a CMake variable from an environment variable. If the # environment variable is not defined then either a fatal error is # generated or the CMake variable is not modified. # # set_from_env( <variable> <environment variable> [REQUIRED|DEFAULT value] ) function(set_from_env var env_var) if(NOT DEFINED ENV{${env_var}}) if (ARGV2 STREQUAL "REQUIRED") message(FATAL_ERROR "Required environment variable \"${env_var}\" not defined.") elseif (ARGV2 STREQUAL "DEFAULT") set(${var} ${ARGV3} PARENT_SCOPE) endif() else() set(${var} $ENV{${env_var}} PARENT_SCOPE) endif() endfunction() set(CTEST_SITE "CircleCI") set(CTEST_UPDATE_VERSION_ONLY 1) # Make environment variables to CMake variables for CTest set_from_env(CTEST_CMAKE_GENERATOR "CTEST_CMAKE_GENERATOR" DEFAULT "Unix Makefiles" ) set_from_env(CTEST_BINARY_DIRECTORY "CTEST_BINARY_DIRECTORY") set_from_env(CTEST_DASHBOARD_ROOT "CTEST_DASHBOARD_ROOT" REQUIRED) set_from_env(CTEST_SOURCE_DIRECTORY "CTEST_SOURCE_DIRECTORY" REQUIRED) set_from_env(CTEST_CONFIGURATION_TYPE "CTEST_CONFIGURATION_TYPE" DEFAULT "Release") set_from_env(CTEST_BUILD_FLAGS "CTEST_BUILD_FLAGS") set_from_env(CTEST_BUILD_TARGET "CTEST_BUILD_TARGET") set_from_env(CTEST_TEST_ARGS "CTEST_TEST_ARGS") set_from_env(PARALLEL_LEVEL "PARALLEL_LEVEL" DEFAULT 2 ) set( CTEST_TEST_ARGS ${CTEST_TEST_ARGS} PARALLEL_LEVEL ${PARALLEL_LEVEL}) set_from_env(DASHBOARD_BRANCH_DIRECTORY "DASHBOARD_BRANCH_DIRECTORY" REQUIRED) # Construct build name based on what is being built string(SUBSTRING $ENV{CIRCLE_SHA1} 0 7 commit_sha1) set(CTEST_BUILD_NAME "CircleCI-$ENV{CIRCLE_BRANCH}-$ENV{CIRCLE_STAGE}-${commit_sha1}") set_from_env(dashboard_git_branch "CIRCLE_BRANCH") set_from_env(dashboard_model "DASHBOARD_MODEL" DEFAULT "Experimental" ) set(dashboard_loop 0) if ( EXISTS "${CTEST_SOURCE_DIRECTORY}/circle.yml") list(APPEND CTEST_NOTES_FILES "${CTEST_SOURCE_DIRECTORY}/circle.yml" ) endif() if ( EXISTS "${CTEST_SOURCE_DIRECTORY}/.circleci/config.yml") list(APPEND CTEST_NOTES_FILES "${CTEST_SOURCE_DIRECTORY}/.circleci/config.yml" ) endif() SET (_dashboard_cache " BUILD_DOCUMENTATION:BOOL=OFF BUILD_EXAMPLES:BOOL=OFF BUILD_SHARED_LIBS:BOOL=ON BUILD_TESTING:BOOL=ON SimpleITK_USE_SYSTEM_LUA:BOOL=ON SimpleITK_EXPLICIT_INSTANTIATION:BOOL=OFF WRAP_DEFAULT:BOOL=OFF " ) set_from_env(dashboard_cache "CTEST_CACHE" DEFAULT ${_dashboard_cache}) if (DEFINED ENV{DISTCC_DIR}) SET (dashboard_cache "${dashboard_cache} CMAKE_CXX_COMPILER_LAUNCHER:STRING=distcc CMAKE_C_COMPILER_LAUNCHER:STRING=distcc " ) endif() include("${DASHBOARD_BRANCH_DIRECTORY}/simpleitk_common.cmake") if(NOT ${configure_return} EQUAL 0 OR NOT ${build_return} EQUAL 0 OR NOT ${build_errors} EQUAL 0 OR NOT ${build_warnings} EQUAL 0 OR NOT ${test_return} EQUAL 0) message(FATAL_ERROR "Build did not complete without warnings, errors, or failures.") else() return(0) endif() .circleci/config.yml 0 → 100644 +198 −0 Original line number Diff line number Diff line referenced: defaults: &defaults docker: - image: circleci/python:2.7 working_directory: ~/ resource_class: large environment: CTEST_DASHBOARD_ROOT: /home/circleci CTEST_SOURCE_DIRECTORY: /home/circleci/SimpleITK CTEST_BINARY_DIRECTORY: /home/circleci/SimpleITK-build CTEST_BUILD_FLAGS: "-j 4" CTEST_CONFIGURATION_TYPE: "Release" CTEST_OUTPUT_ON_FAILURE: 1 ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS: 2 PARALLEL_LEVEL: 4 DASHBOARD_BRANCH_DIRECTORY: /home/circleci/dashboard ExternalData_OBJECT_STORES: /home/circleci/.ExternalData CCACHE_NODIRECT: 1 dependencies: &dependencies run: name: Dependencies command: | sudo apt-get install -y rsync lua5.1 ccache kwstyle swig sudo pip install --upgrade pip sudo pip install numpy scikit-ci-addons ci_addons circle/install_cmake.py 3.10.2 generate-hash-step: &generate-hash-step run: name: Generate external data hash command: | cd SimpleITK git log -n 1 ${CTEST_SOURCE_DIRECTORY}/Testing/Data/ | tee /home/circleci/external-data.hashable restore-data-step: &restore-data-step restore_cache: keys: - 'v1-external-data-{{ checksum "/home/circleci/external-data.hashable" }}' - 'v1-external-data' restore-ccache-step: &restore-ccache-step restore_cache: keys: - ccache-{{ arch }}-{{ .Branch }} - ccache-{{ arch }}-master clone-dashboard-step: &clone-dashboard-step run: name: Cloning dashboard branch command: | git clone --single-branch ${CIRCLE_REPOSITORY_URL} -b dashboard ${DASHBOARD_BRANCH_DIRECTORY} env-step: &env-step run: name: Additional Environment Variables command: | echo 'export DASHBOARD_MODEL=$( [[ "$CIRCLE_BRANCH" = "master" || "$CIRCLE_BRANCH" = "next" || "$CIRCLE_BRANCH" = "release" ]] && echo Continuous || echo Experimental )' >> $BASH_ENV echo 'export PATH=/usr/lib/ccache:${PATH}' >> $BASH_ENV version: 2 jobs: build-and-test: <<: *defaults steps: - checkout: path : ~/SimpleITK - *generate-hash-step - *restore-data-step - *restore-ccache-step - *clone-dashboard-step - *dependencies - *env-step - run: name: CCache initialization command: | ccache --show-stats ccache --zero-stats ccache --max-size=2.0G - run: name: Build and Testing with CTest no_output_timeout: 20.0m command: | export LD_LIBRARY_PATH="${CTEST_BINARY_DIRECTORY}/ITK-prefix/lib/:${CTEST_BINARY_DIRECTORY}/SimpleITK-build/lib" export CTEST_CACHE=" BUILD_DOCUMENTATION:BOOL=OFF BUILD_EXAMPLES:BOOL=OFF BUILD_SHARED_LIBS:BOOL=ON SimpleITK_USE_SYSTEM_LUA:BOOL=ON SimpleITK_EXPLICIT_INSTANTIATION:BOOL=OFF WRAP_DEFAULT:BOOL=OFF" ctest -V -S "${CTEST_SOURCE_DIRECTORY}/.circleci/circleci.cmake" - run: name: ccache stats when: always command: | ccache --show-stats - run: name: Formatting CTest for JUnit when: always command: | env mkdir -p /tmp/test-results ci_addons ctest_junit_formatter ${CTEST_BINARY_DIRECTORY} > /tmp/test-results/JUnit-${CIRCLE_NODE_INDEX}.xml - store_test_results: path: /tmp/test-results destination: ctest - save_cache: key: 'ccache-{{ arch }}-{{ .Branch }}-{{ epoch }}' paths: [ "/home/circleci/.ccache" ] - save_cache: key: 'v1-external-data-{{ checksum "/home/circleci/external-data.hashable" }}' paths: [ "/home/circleci/.ExternalData" ] - run: name: Cleanup build command: | rm -rf "${CTEST_BINARY_DIRECTORY}/ITK" "${CTEST_BINARY_DIRECTORY}/ITK-build" rm -rf "${CTEST_BINARY_DIRECTORY}/SimpleITK" "${CTEST_BINARY_DIRECTORY}/SimpleITK-build" - persist_to_workspace: root: /home/circleci/SimpleITK-build paths: - "*" python-and-test: <<: *defaults steps: - checkout: path : ~/SimpleITK - *generate-hash-step - *restore-data-step - *clone-dashboard-step - *dependencies - *env-step - attach_workspace: at: /home/circleci/SimpleITK-build - run: name: Build Python and Testing with CTest no_output_timeout: 20.0m command: | export LD_LIBRARY_PATH="${CTEST_BINARY_DIRECTORY}/ITK-prefix/lib/:${CTEST_BINARY_DIRECTORY}/lib" export CTEST_CACHE="CMAKE_PREFIX_PATH:PATH=${CTEST_BINARY_DIRECTORY} SWIG_EXECUTABLE:PATH=${CTEST_BINARY_DIRECTORY}/Swig/bin/swig" export CTEST_BINARY_DIRECTORY="/home/circleci/SimpleITK-py" ctest -V -Ddashboard_source_config_dir:PATH="Wrapping/Python" -S "${CTEST_SOURCE_DIRECTORY}/.circleci/circleci.cmake" docs: <<: *defaults steps: - checkout: path : ~/SimpleITK - *generate-hash-step - *restore-data-step - *restore-ccache-step - *clone-dashboard-step - *dependencies - *env-step - run: name: Additional Dependencies command: | sudo apt-get install -y doxygen - run: name: Building and Generating Doxygen no_output_timeout: 20.0m command: | export CTEST_BUILD_TARGET=SimpleITK-doc export CTEST_CACHE=" BUILD_SHARED_LIBS:BOOL=ON WRAP_DEFAULT=OFF BUILD_DOXYGEN=ON SimpleITK_USE_SYSTEM_LUA:BOOL=ON" ctest -V -Ddashboard_no_test:BOOL=1\ -Ddashboard_track:BOOL=Doxygen\ -S "${CTEST_SOURCE_DIRECTORY}/.circleci/circleci.cmake" - run: name: Archiving directory for artifact command: | cd ${CTEST_BINARY_DIRECTORY}/SimpleITK-build/Documentation/ tar -zcvf simpleitk_doxygen_html.tar.gz html - store_artifacts: path: /home/circleci/SimpleITK-build/SimpleITK-build/Documentation/simpleitk_doxygen_html.tar.gz workflows: version: 2 build_and_test: jobs: - build-and-test: filters: branches: ignore: - gh-pages - dashboard - hooks - python-and-test: requires: - build-and-test nightly: triggers: - schedule: cron: "0 3 * * *" filters: branches: only: - master jobs: - docs CMake/CTestCustom.cmake.in +1 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ SET(CTEST_CUSTOM_WARNING_EXCEPTION # Ignore CSharp invalid version warning for dev "warning CS1607.*The version number.*dev.*is invalid" "warning CS1607.*The version.*dev.*is not in the normal" "warning CS7035.*The specified version string.*does not conform" # Warning when building R, issue related to make file "warning: jobserver unavailable:" Loading CMake/configure_file_build_time.cmake 0 → 100644 +1 −0 Original line number Diff line number Diff line configure_file( "${CONFIGUREBUILDTIME_filename}" "${CONFIGUREBUILDTIME_out_filename}" ) CMake/sitkAddTest.cmake +77 −41 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ include(sitkExternalData) include(CMakeParseArguments) set(SimpleITK_DATA_ROOT ${SimpleITK_SOURCE_DIR}/Testing/Data) set(SimpleITK_TEST_OUTPUT_DIR ${CMAKE_BINARY_DIR}/Testing/Temporary) #----------------------------------------------------------------------------- # SimpleITK wrapper for add_test that adds support for external data, Loading @@ -13,16 +14,26 @@ set(SimpleITK_DATA_ROOT ${SimpleITK_SOURCE_DIR}/Testing/Data) # The first arguments are passed to cmake's add_test function with # support for the DATA{} references to external data # TRANSFORM_COMPARE <test transform> <baseline displacement> [tolerance] # IMAGE_COMPARE <test image> <baseline image> [tolerance] # IMAGE_MD5_COMPARE <test image> <md5 hash> function(sitk_add_test) set(options "") set(oneValueArgs "NAME") set(multiValueArgs COMMAND TRANSFORM_COMPARE) set(multiValueArgs COMMAND TRANSFORM_COMPARE IMAGE_COMPARE IMAGE_MD5_COMPARE) cmake_parse_arguments("_" "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) if ( NOT "${__TRANSFORM_COMPARE}" STREQUAL "" ) set(COMPARE_ARGS ${COMPARE_ARGS} --compareTransform ${__TRANSFORM_COMPARE}) endif() if ( NOT "${__IMAGE_COMPARE}" STREQUAL "" ) set(COMPARE_ARGS ${COMPARE_ARGS} --compare ${__IMAGE_COMPARE}) endif() if ( NOT "${__IMAGE_MD5_COMPARE}" STREQUAL "" ) set(COMPARE_ARGS ${COMPARE_ARGS} --compare-MD5 ${__IMAGE_MD5_COMPARE}) endif() if (COMPARE_ARGS) set(__COMMAND $<TARGET_FILE:sitkCompareDriver> ${COMPARE_ARGS} -- ${__COMMAND}) endif() Loading @@ -30,7 +41,6 @@ function(sitk_add_test) # Add test with data in the SimpleITKData group. ExternalData_add_test(SimpleITKData NAME ${__NAME} COMMAND ${__COMMAND} ${__UNPARSED_ARGUMENTS}) endfunction() Loading @@ -52,16 +62,21 @@ function(sitk_add_python_test name) endif() sitk_add_test(NAME Python.${name} COMMAND "${ITK_TEST_DRIVER}" COMMAND ${command} ${ARGN} ) set_property(TEST Python.${name} PROPERTY LABELS Python ) if (SimpleITK_TESTING_NOSHOW) set_property(TEST Python.${name} PROPERTY ENVIRONMENT SITK_NOSHOW=YES ) endif() if (NOT SimpleITK_PYTHON_USE_VIRTUALENV) set_property(TEST Python.${name} APPEND PROPERTY ENVIRONMENT PYTHONPATH=${SimpleITK_BINARY_DIR}/Wrapping/Python APPEND PROPERTY ENVIRONMENT PYTHONPATH=${SimpleITK_Python_BINARY_DIR} ) endif() Loading @@ -86,16 +101,21 @@ function(sitk_add_lua_test name) endif() sitk_add_test(NAME Lua.${name} COMMAND "${ITK_TEST_DRIVER}" COMMAND ${command} ${ARGN} ) set_property(TEST Lua.${name} PROPERTY LABELS Lua ) set_property(TEST Lua.${name} PROPERTY ENVIRONMENT LUA_CPATH=$<TARGET_FILE:SimpleITKLuaModule_LUA> ) if (SimpleITK_TESTING_NOSHOW) set_property(TEST Lua.${name} APPEND PROPERTY ENVIRONMENT SITK_NOSHOW=YES ) endif() endfunction() Loading @@ -117,11 +137,13 @@ function(sitk_add_ruby_test name) endif() sitk_add_test(NAME Ruby.${name} COMMAND "${ITK_TEST_DRIVER}" COMMAND ${command} ${ARGN} ) set_property(TEST Ruby.${name} PROPERTY LABELS Ruby ) set_property(TEST Ruby.${name} PROPERTY ENVIRONMENT RUBYLIB=$<TARGET_FILE_DIR:simpleitk_RUBY> ) Loading @@ -146,10 +168,13 @@ function(sitk_add_tcl_test name) endif() sitk_add_test(NAME Tcl.${name} COMMAND "${ITK_TEST_DRIVER}" COMMAND ${command} ${ARGN} ) set_property(TEST Tcl.${name} PROPERTY LABELS Tcl ) endfunction() Loading @@ -170,9 +195,9 @@ function(sitk_add_java_test name java_file) set( _JAVA_LIBRARY_PATH "$<TARGET_FILE_DIR:SimpleITKJava_JAVA>") if(WIN32) set( _JAVA_CLASSPATH "${SimpleITK_BINARY_DIR}/Wrapping/Java/${JAR_FILE}$<SEMICOLON>${_class_path}" ) set( _JAVA_CLASSPATH "${SimpleITK_Java_BINARY_DIR}/${JAR_FILE}$<SEMICOLON>${_class_path}" ) else() set( _JAVA_CLASSPATH "${SimpleITK_BINARY_DIR}/Wrapping/Java/${JAR_FILE}:${_class_path}" ) set( _JAVA_CLASSPATH "${SimpleITK_Java_BINARY_DIR}/${JAR_FILE}:${_class_path}" ) endif() if (NOT TARGET ${_java_class}Java) Loading @@ -196,13 +221,16 @@ function(sitk_add_java_test name java_file) sitk_add_test(NAME Java.${name} COMMAND "${ITK_TEST_DRIVER}" COMMAND "${Java_JAVA_EXECUTABLE}" "-Djava.library.path=${_JAVA_LIBRARY_PATH}" "-classpath" "${_JAVA_CLASSPATH}" "${_java_class}" ${ARGN} ) set_property(TEST Java.${name} PROPERTY LABELS Java ) endfunction() Loading @@ -215,7 +243,8 @@ function(sitk_add_r_test name) return() endif() set(command "${R_COMMAND}") set(command "${RSCRIPT_EXECUTABLE}" "--no-save" "--no-restore" "--no-site-file" "--no-init-file") # add extra command which may be needed on some systems if(CMAKE_OSX_ARCHITECTURES) Loading @@ -224,12 +253,17 @@ function(sitk_add_r_test name) endif() sitk_add_test(NAME R.${name} COMMAND "${ITK_TEST_DRIVER}" COMMAND ${command} ${ARGN} ) file(TO_NATIVE_PATH "${SimpleITK_BINARY_DIR}/Wrapping/R/R_libs" _native_path) set_property(TEST R.${name} PROPERTY LABELS R ) file(TO_NATIVE_PATH "${SimpleITK_R_BINARY_DIR}/R_libs" _native_path) set_property(TEST R.${name} PROPERTY ENVIRONMENT R_LIBS=${_native_path} ) Loading Loading @@ -274,17 +308,19 @@ function(sitk_add_csharp_test name csharp_file) # the interpreter is set to "" when none is needed if( CSHARP_INTERPRETER ) sitk_add_test(NAME CSharp.${name} COMMAND "${ITK_TEST_DRIVER}" COMMAND "${CSHARP_INTERPRETER}" "${CSHARP_BINARY_DIRECTORY}/${CSHARP_EXECUTABLE}.exe" ${ARGN} ) else () sitk_add_test(NAME CSharp.${name} COMMAND "${ITK_TEST_DRIVER}" COMMAND "${CSHARP_BINARY_DIRECTORY}/${CSHARP_EXECUTABLE}.exe" ${ARGN} ) endif() set_property(TEST CSharp.${name} PROPERTY LABELS CSharp ) endfunction() Loading
.circleci/circleci.cmake 0 → 100644 +99 −0 Original line number Diff line number Diff line # set_from_env # ------------ # # Sets a CMake variable from an environment variable. If the # environment variable is not defined then either a fatal error is # generated or the CMake variable is not modified. # # set_from_env( <variable> <environment variable> [REQUIRED|DEFAULT value] ) function(set_from_env var env_var) if(NOT DEFINED ENV{${env_var}}) if (ARGV2 STREQUAL "REQUIRED") message(FATAL_ERROR "Required environment variable \"${env_var}\" not defined.") elseif (ARGV2 STREQUAL "DEFAULT") set(${var} ${ARGV3} PARENT_SCOPE) endif() else() set(${var} $ENV{${env_var}} PARENT_SCOPE) endif() endfunction() set(CTEST_SITE "CircleCI") set(CTEST_UPDATE_VERSION_ONLY 1) # Make environment variables to CMake variables for CTest set_from_env(CTEST_CMAKE_GENERATOR "CTEST_CMAKE_GENERATOR" DEFAULT "Unix Makefiles" ) set_from_env(CTEST_BINARY_DIRECTORY "CTEST_BINARY_DIRECTORY") set_from_env(CTEST_DASHBOARD_ROOT "CTEST_DASHBOARD_ROOT" REQUIRED) set_from_env(CTEST_SOURCE_DIRECTORY "CTEST_SOURCE_DIRECTORY" REQUIRED) set_from_env(CTEST_CONFIGURATION_TYPE "CTEST_CONFIGURATION_TYPE" DEFAULT "Release") set_from_env(CTEST_BUILD_FLAGS "CTEST_BUILD_FLAGS") set_from_env(CTEST_BUILD_TARGET "CTEST_BUILD_TARGET") set_from_env(CTEST_TEST_ARGS "CTEST_TEST_ARGS") set_from_env(PARALLEL_LEVEL "PARALLEL_LEVEL" DEFAULT 2 ) set( CTEST_TEST_ARGS ${CTEST_TEST_ARGS} PARALLEL_LEVEL ${PARALLEL_LEVEL}) set_from_env(DASHBOARD_BRANCH_DIRECTORY "DASHBOARD_BRANCH_DIRECTORY" REQUIRED) # Construct build name based on what is being built string(SUBSTRING $ENV{CIRCLE_SHA1} 0 7 commit_sha1) set(CTEST_BUILD_NAME "CircleCI-$ENV{CIRCLE_BRANCH}-$ENV{CIRCLE_STAGE}-${commit_sha1}") set_from_env(dashboard_git_branch "CIRCLE_BRANCH") set_from_env(dashboard_model "DASHBOARD_MODEL" DEFAULT "Experimental" ) set(dashboard_loop 0) if ( EXISTS "${CTEST_SOURCE_DIRECTORY}/circle.yml") list(APPEND CTEST_NOTES_FILES "${CTEST_SOURCE_DIRECTORY}/circle.yml" ) endif() if ( EXISTS "${CTEST_SOURCE_DIRECTORY}/.circleci/config.yml") list(APPEND CTEST_NOTES_FILES "${CTEST_SOURCE_DIRECTORY}/.circleci/config.yml" ) endif() SET (_dashboard_cache " BUILD_DOCUMENTATION:BOOL=OFF BUILD_EXAMPLES:BOOL=OFF BUILD_SHARED_LIBS:BOOL=ON BUILD_TESTING:BOOL=ON SimpleITK_USE_SYSTEM_LUA:BOOL=ON SimpleITK_EXPLICIT_INSTANTIATION:BOOL=OFF WRAP_DEFAULT:BOOL=OFF " ) set_from_env(dashboard_cache "CTEST_CACHE" DEFAULT ${_dashboard_cache}) if (DEFINED ENV{DISTCC_DIR}) SET (dashboard_cache "${dashboard_cache} CMAKE_CXX_COMPILER_LAUNCHER:STRING=distcc CMAKE_C_COMPILER_LAUNCHER:STRING=distcc " ) endif() include("${DASHBOARD_BRANCH_DIRECTORY}/simpleitk_common.cmake") if(NOT ${configure_return} EQUAL 0 OR NOT ${build_return} EQUAL 0 OR NOT ${build_errors} EQUAL 0 OR NOT ${build_warnings} EQUAL 0 OR NOT ${test_return} EQUAL 0) message(FATAL_ERROR "Build did not complete without warnings, errors, or failures.") else() return(0) endif()
.circleci/config.yml 0 → 100644 +198 −0 Original line number Diff line number Diff line referenced: defaults: &defaults docker: - image: circleci/python:2.7 working_directory: ~/ resource_class: large environment: CTEST_DASHBOARD_ROOT: /home/circleci CTEST_SOURCE_DIRECTORY: /home/circleci/SimpleITK CTEST_BINARY_DIRECTORY: /home/circleci/SimpleITK-build CTEST_BUILD_FLAGS: "-j 4" CTEST_CONFIGURATION_TYPE: "Release" CTEST_OUTPUT_ON_FAILURE: 1 ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS: 2 PARALLEL_LEVEL: 4 DASHBOARD_BRANCH_DIRECTORY: /home/circleci/dashboard ExternalData_OBJECT_STORES: /home/circleci/.ExternalData CCACHE_NODIRECT: 1 dependencies: &dependencies run: name: Dependencies command: | sudo apt-get install -y rsync lua5.1 ccache kwstyle swig sudo pip install --upgrade pip sudo pip install numpy scikit-ci-addons ci_addons circle/install_cmake.py 3.10.2 generate-hash-step: &generate-hash-step run: name: Generate external data hash command: | cd SimpleITK git log -n 1 ${CTEST_SOURCE_DIRECTORY}/Testing/Data/ | tee /home/circleci/external-data.hashable restore-data-step: &restore-data-step restore_cache: keys: - 'v1-external-data-{{ checksum "/home/circleci/external-data.hashable" }}' - 'v1-external-data' restore-ccache-step: &restore-ccache-step restore_cache: keys: - ccache-{{ arch }}-{{ .Branch }} - ccache-{{ arch }}-master clone-dashboard-step: &clone-dashboard-step run: name: Cloning dashboard branch command: | git clone --single-branch ${CIRCLE_REPOSITORY_URL} -b dashboard ${DASHBOARD_BRANCH_DIRECTORY} env-step: &env-step run: name: Additional Environment Variables command: | echo 'export DASHBOARD_MODEL=$( [[ "$CIRCLE_BRANCH" = "master" || "$CIRCLE_BRANCH" = "next" || "$CIRCLE_BRANCH" = "release" ]] && echo Continuous || echo Experimental )' >> $BASH_ENV echo 'export PATH=/usr/lib/ccache:${PATH}' >> $BASH_ENV version: 2 jobs: build-and-test: <<: *defaults steps: - checkout: path : ~/SimpleITK - *generate-hash-step - *restore-data-step - *restore-ccache-step - *clone-dashboard-step - *dependencies - *env-step - run: name: CCache initialization command: | ccache --show-stats ccache --zero-stats ccache --max-size=2.0G - run: name: Build and Testing with CTest no_output_timeout: 20.0m command: | export LD_LIBRARY_PATH="${CTEST_BINARY_DIRECTORY}/ITK-prefix/lib/:${CTEST_BINARY_DIRECTORY}/SimpleITK-build/lib" export CTEST_CACHE=" BUILD_DOCUMENTATION:BOOL=OFF BUILD_EXAMPLES:BOOL=OFF BUILD_SHARED_LIBS:BOOL=ON SimpleITK_USE_SYSTEM_LUA:BOOL=ON SimpleITK_EXPLICIT_INSTANTIATION:BOOL=OFF WRAP_DEFAULT:BOOL=OFF" ctest -V -S "${CTEST_SOURCE_DIRECTORY}/.circleci/circleci.cmake" - run: name: ccache stats when: always command: | ccache --show-stats - run: name: Formatting CTest for JUnit when: always command: | env mkdir -p /tmp/test-results ci_addons ctest_junit_formatter ${CTEST_BINARY_DIRECTORY} > /tmp/test-results/JUnit-${CIRCLE_NODE_INDEX}.xml - store_test_results: path: /tmp/test-results destination: ctest - save_cache: key: 'ccache-{{ arch }}-{{ .Branch }}-{{ epoch }}' paths: [ "/home/circleci/.ccache" ] - save_cache: key: 'v1-external-data-{{ checksum "/home/circleci/external-data.hashable" }}' paths: [ "/home/circleci/.ExternalData" ] - run: name: Cleanup build command: | rm -rf "${CTEST_BINARY_DIRECTORY}/ITK" "${CTEST_BINARY_DIRECTORY}/ITK-build" rm -rf "${CTEST_BINARY_DIRECTORY}/SimpleITK" "${CTEST_BINARY_DIRECTORY}/SimpleITK-build" - persist_to_workspace: root: /home/circleci/SimpleITK-build paths: - "*" python-and-test: <<: *defaults steps: - checkout: path : ~/SimpleITK - *generate-hash-step - *restore-data-step - *clone-dashboard-step - *dependencies - *env-step - attach_workspace: at: /home/circleci/SimpleITK-build - run: name: Build Python and Testing with CTest no_output_timeout: 20.0m command: | export LD_LIBRARY_PATH="${CTEST_BINARY_DIRECTORY}/ITK-prefix/lib/:${CTEST_BINARY_DIRECTORY}/lib" export CTEST_CACHE="CMAKE_PREFIX_PATH:PATH=${CTEST_BINARY_DIRECTORY} SWIG_EXECUTABLE:PATH=${CTEST_BINARY_DIRECTORY}/Swig/bin/swig" export CTEST_BINARY_DIRECTORY="/home/circleci/SimpleITK-py" ctest -V -Ddashboard_source_config_dir:PATH="Wrapping/Python" -S "${CTEST_SOURCE_DIRECTORY}/.circleci/circleci.cmake" docs: <<: *defaults steps: - checkout: path : ~/SimpleITK - *generate-hash-step - *restore-data-step - *restore-ccache-step - *clone-dashboard-step - *dependencies - *env-step - run: name: Additional Dependencies command: | sudo apt-get install -y doxygen - run: name: Building and Generating Doxygen no_output_timeout: 20.0m command: | export CTEST_BUILD_TARGET=SimpleITK-doc export CTEST_CACHE=" BUILD_SHARED_LIBS:BOOL=ON WRAP_DEFAULT=OFF BUILD_DOXYGEN=ON SimpleITK_USE_SYSTEM_LUA:BOOL=ON" ctest -V -Ddashboard_no_test:BOOL=1\ -Ddashboard_track:BOOL=Doxygen\ -S "${CTEST_SOURCE_DIRECTORY}/.circleci/circleci.cmake" - run: name: Archiving directory for artifact command: | cd ${CTEST_BINARY_DIRECTORY}/SimpleITK-build/Documentation/ tar -zcvf simpleitk_doxygen_html.tar.gz html - store_artifacts: path: /home/circleci/SimpleITK-build/SimpleITK-build/Documentation/simpleitk_doxygen_html.tar.gz workflows: version: 2 build_and_test: jobs: - build-and-test: filters: branches: ignore: - gh-pages - dashboard - hooks - python-and-test: requires: - build-and-test nightly: triggers: - schedule: cron: "0 3 * * *" filters: branches: only: - master jobs: - docs
CMake/CTestCustom.cmake.in +1 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ SET(CTEST_CUSTOM_WARNING_EXCEPTION # Ignore CSharp invalid version warning for dev "warning CS1607.*The version number.*dev.*is invalid" "warning CS1607.*The version.*dev.*is not in the normal" "warning CS7035.*The specified version string.*does not conform" # Warning when building R, issue related to make file "warning: jobserver unavailable:" Loading
CMake/configure_file_build_time.cmake 0 → 100644 +1 −0 Original line number Diff line number Diff line configure_file( "${CONFIGUREBUILDTIME_filename}" "${CONFIGUREBUILDTIME_out_filename}" )
CMake/sitkAddTest.cmake +77 −41 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ include(sitkExternalData) include(CMakeParseArguments) set(SimpleITK_DATA_ROOT ${SimpleITK_SOURCE_DIR}/Testing/Data) set(SimpleITK_TEST_OUTPUT_DIR ${CMAKE_BINARY_DIR}/Testing/Temporary) #----------------------------------------------------------------------------- # SimpleITK wrapper for add_test that adds support for external data, Loading @@ -13,16 +14,26 @@ set(SimpleITK_DATA_ROOT ${SimpleITK_SOURCE_DIR}/Testing/Data) # The first arguments are passed to cmake's add_test function with # support for the DATA{} references to external data # TRANSFORM_COMPARE <test transform> <baseline displacement> [tolerance] # IMAGE_COMPARE <test image> <baseline image> [tolerance] # IMAGE_MD5_COMPARE <test image> <md5 hash> function(sitk_add_test) set(options "") set(oneValueArgs "NAME") set(multiValueArgs COMMAND TRANSFORM_COMPARE) set(multiValueArgs COMMAND TRANSFORM_COMPARE IMAGE_COMPARE IMAGE_MD5_COMPARE) cmake_parse_arguments("_" "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) if ( NOT "${__TRANSFORM_COMPARE}" STREQUAL "" ) set(COMPARE_ARGS ${COMPARE_ARGS} --compareTransform ${__TRANSFORM_COMPARE}) endif() if ( NOT "${__IMAGE_COMPARE}" STREQUAL "" ) set(COMPARE_ARGS ${COMPARE_ARGS} --compare ${__IMAGE_COMPARE}) endif() if ( NOT "${__IMAGE_MD5_COMPARE}" STREQUAL "" ) set(COMPARE_ARGS ${COMPARE_ARGS} --compare-MD5 ${__IMAGE_MD5_COMPARE}) endif() if (COMPARE_ARGS) set(__COMMAND $<TARGET_FILE:sitkCompareDriver> ${COMPARE_ARGS} -- ${__COMMAND}) endif() Loading @@ -30,7 +41,6 @@ function(sitk_add_test) # Add test with data in the SimpleITKData group. ExternalData_add_test(SimpleITKData NAME ${__NAME} COMMAND ${__COMMAND} ${__UNPARSED_ARGUMENTS}) endfunction() Loading @@ -52,16 +62,21 @@ function(sitk_add_python_test name) endif() sitk_add_test(NAME Python.${name} COMMAND "${ITK_TEST_DRIVER}" COMMAND ${command} ${ARGN} ) set_property(TEST Python.${name} PROPERTY LABELS Python ) if (SimpleITK_TESTING_NOSHOW) set_property(TEST Python.${name} PROPERTY ENVIRONMENT SITK_NOSHOW=YES ) endif() if (NOT SimpleITK_PYTHON_USE_VIRTUALENV) set_property(TEST Python.${name} APPEND PROPERTY ENVIRONMENT PYTHONPATH=${SimpleITK_BINARY_DIR}/Wrapping/Python APPEND PROPERTY ENVIRONMENT PYTHONPATH=${SimpleITK_Python_BINARY_DIR} ) endif() Loading @@ -86,16 +101,21 @@ function(sitk_add_lua_test name) endif() sitk_add_test(NAME Lua.${name} COMMAND "${ITK_TEST_DRIVER}" COMMAND ${command} ${ARGN} ) set_property(TEST Lua.${name} PROPERTY LABELS Lua ) set_property(TEST Lua.${name} PROPERTY ENVIRONMENT LUA_CPATH=$<TARGET_FILE:SimpleITKLuaModule_LUA> ) if (SimpleITK_TESTING_NOSHOW) set_property(TEST Lua.${name} APPEND PROPERTY ENVIRONMENT SITK_NOSHOW=YES ) endif() endfunction() Loading @@ -117,11 +137,13 @@ function(sitk_add_ruby_test name) endif() sitk_add_test(NAME Ruby.${name} COMMAND "${ITK_TEST_DRIVER}" COMMAND ${command} ${ARGN} ) set_property(TEST Ruby.${name} PROPERTY LABELS Ruby ) set_property(TEST Ruby.${name} PROPERTY ENVIRONMENT RUBYLIB=$<TARGET_FILE_DIR:simpleitk_RUBY> ) Loading @@ -146,10 +168,13 @@ function(sitk_add_tcl_test name) endif() sitk_add_test(NAME Tcl.${name} COMMAND "${ITK_TEST_DRIVER}" COMMAND ${command} ${ARGN} ) set_property(TEST Tcl.${name} PROPERTY LABELS Tcl ) endfunction() Loading @@ -170,9 +195,9 @@ function(sitk_add_java_test name java_file) set( _JAVA_LIBRARY_PATH "$<TARGET_FILE_DIR:SimpleITKJava_JAVA>") if(WIN32) set( _JAVA_CLASSPATH "${SimpleITK_BINARY_DIR}/Wrapping/Java/${JAR_FILE}$<SEMICOLON>${_class_path}" ) set( _JAVA_CLASSPATH "${SimpleITK_Java_BINARY_DIR}/${JAR_FILE}$<SEMICOLON>${_class_path}" ) else() set( _JAVA_CLASSPATH "${SimpleITK_BINARY_DIR}/Wrapping/Java/${JAR_FILE}:${_class_path}" ) set( _JAVA_CLASSPATH "${SimpleITK_Java_BINARY_DIR}/${JAR_FILE}:${_class_path}" ) endif() if (NOT TARGET ${_java_class}Java) Loading @@ -196,13 +221,16 @@ function(sitk_add_java_test name java_file) sitk_add_test(NAME Java.${name} COMMAND "${ITK_TEST_DRIVER}" COMMAND "${Java_JAVA_EXECUTABLE}" "-Djava.library.path=${_JAVA_LIBRARY_PATH}" "-classpath" "${_JAVA_CLASSPATH}" "${_java_class}" ${ARGN} ) set_property(TEST Java.${name} PROPERTY LABELS Java ) endfunction() Loading @@ -215,7 +243,8 @@ function(sitk_add_r_test name) return() endif() set(command "${R_COMMAND}") set(command "${RSCRIPT_EXECUTABLE}" "--no-save" "--no-restore" "--no-site-file" "--no-init-file") # add extra command which may be needed on some systems if(CMAKE_OSX_ARCHITECTURES) Loading @@ -224,12 +253,17 @@ function(sitk_add_r_test name) endif() sitk_add_test(NAME R.${name} COMMAND "${ITK_TEST_DRIVER}" COMMAND ${command} ${ARGN} ) file(TO_NATIVE_PATH "${SimpleITK_BINARY_DIR}/Wrapping/R/R_libs" _native_path) set_property(TEST R.${name} PROPERTY LABELS R ) file(TO_NATIVE_PATH "${SimpleITK_R_BINARY_DIR}/R_libs" _native_path) set_property(TEST R.${name} PROPERTY ENVIRONMENT R_LIBS=${_native_path} ) Loading Loading @@ -274,17 +308,19 @@ function(sitk_add_csharp_test name csharp_file) # the interpreter is set to "" when none is needed if( CSHARP_INTERPRETER ) sitk_add_test(NAME CSharp.${name} COMMAND "${ITK_TEST_DRIVER}" COMMAND "${CSHARP_INTERPRETER}" "${CSHARP_BINARY_DIRECTORY}/${CSHARP_EXECUTABLE}.exe" ${ARGN} ) else () sitk_add_test(NAME CSharp.${name} COMMAND "${ITK_TEST_DRIVER}" COMMAND "${CSHARP_BINARY_DIRECTORY}/${CSHARP_EXECUTABLE}.exe" ${ARGN} ) endif() set_property(TEST CSharp.${name} PROPERTY LABELS CSharp ) endfunction()