if (NOT DEFINED "ENV{GITLAB_CI}") message(FATAL_ERROR "This script assumes it is being run inside of GitLab-CI") endif () # Set up the source and build paths. set(CTEST_SOURCE_DIRECTORY "$ENV{CI_PROJECT_DIR}") if("$ENV{CMAKE_CI_INPLACE}") set(CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}") else() set(CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}/build") endif() if (NOT "$ENV{CTEST_SOURCE_SUBDIRECTORY}" STREQUAL "") string(APPEND CTEST_SOURCE_DIRECTORY "/$ENV{CTEST_SOURCE_SUBDIRECTORY}") endif () if ("$ENV{CMAKE_CONFIGURATION}" STREQUAL "") message(FATAL_ERROR "The CMAKE_CONFIGURATION environment variable is required to know what " "cache initialization file to use.") endif () # Set the build metadata. if(NOT "$ENV{CMAKE_CI_BUILD_NAME}" STREQUAL "") set(CTEST_BUILD_NAME "$ENV{CI_PROJECT_NAME}-$ENV{CMAKE_CI_BUILD_NAME}") else() set(CTEST_BUILD_NAME "$ENV{CI_PROJECT_NAME}-$ENV{CMAKE_CONFIGURATION}") endif() set(CTEST_SITE "gitlab-ci") set(ctest_model "Experimental") # Default to Release builds. if (NOT "$ENV{CMAKE_CI_BUILD_TYPE}" STREQUAL "") set(CTEST_BUILD_CONFIGURATION "$ENV{CMAKE_CI_BUILD_TYPE}") endif () if (NOT CTEST_BUILD_CONFIGURATION) set(CTEST_BUILD_CONFIGURATION "Release") endif () set(CTEST_CONFIGURATION_TYPE "${CTEST_BUILD_CONFIGURATION}") # Default to using Ninja. if (NOT "$ENV{CMAKE_GENERATOR}" STREQUAL "") set(CTEST_CMAKE_GENERATOR "$ENV{CMAKE_GENERATOR}") endif () if (NOT CTEST_CMAKE_GENERATOR) set(CTEST_CMAKE_GENERATOR "Ninja") endif () # Set the toolset and platform if requested. if (NOT "$ENV{CMAKE_GENERATOR_PLATFORM}" STREQUAL "") set(CTEST_CMAKE_GENERATOR_PLATFORM "$ENV{CMAKE_GENERATOR_PLATFORM}") endif () if (NOT "$ENV{CMAKE_GENERATOR_TOOLSET}" STREQUAL "") set(CTEST_CMAKE_GENERATOR_TOOLSET "$ENV{CMAKE_GENERATOR_TOOLSET}") endif () # Determine the group to submit to. set(ctest_group "Experimental") if (NOT "$ENV{CI_MERGE_REQUEST_ID}" STREQUAL "") set(ctest_group "merge-requests") elseif (NOT "$ENV{CMAKE_CI_PROJECT_CONTINUOUS_BRANCH}" STREQUAL "" AND "$ENV{CMAKE_CI_PROJECT_CONTINUOUS_BRANCH}" STREQUAL "$ENV{CI_COMMIT_BRANCH}" AND NOT "$ENV{CMAKE_CI_JOB_CONTINUOUS}" STREQUAL "") set(ctest_model "Continuous") if (NOT "$ENV{CMAKE_CI_JOB_HELP}" STREQUAL "") set(ctest_group "Continuous Help") else() set(ctest_group "Continuous") endif() string(PREPEND CTEST_BUILD_NAME "continuous-") elseif (NOT "$ENV{CMAKE_CI_NIGHTLY}" STREQUAL "") set(ctest_model "Nightly") set(ctest_group "Nightly Expected") string(PREPEND CTEST_BUILD_NAME "nightly-") elseif ("$ENV{CI_PROJECT_PATH}" STREQUAL "cmake/cmake") if ("$ENV{CI_COMMIT_REF_NAME}" STREQUAL "master") set(ctest_group "master") elseif ("$ENV{CI_COMMIT_REF_NAME}" STREQUAL "release") set(ctest_group "release") endif () endif ()