gitlab_ci.cmake 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. if (NOT DEFINED "ENV{GITLAB_CI}")
  2. message(FATAL_ERROR
  3. "This script assumes it is being run inside of GitLab-CI")
  4. endif ()
  5. # Set up the source and build paths.
  6. set(CTEST_SOURCE_DIRECTORY "$ENV{CI_PROJECT_DIR}")
  7. if("$ENV{CMAKE_CI_INPLACE}")
  8. set(CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}")
  9. else()
  10. set(CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}/build")
  11. endif()
  12. if (NOT "$ENV{CTEST_SOURCE_SUBDIRECTORY}" STREQUAL "")
  13. string(APPEND CTEST_SOURCE_DIRECTORY "/$ENV{CTEST_SOURCE_SUBDIRECTORY}")
  14. endif ()
  15. if ("$ENV{CMAKE_CONFIGURATION}" STREQUAL "")
  16. message(FATAL_ERROR
  17. "The CMAKE_CONFIGURATION environment variable is required to know what "
  18. "cache initialization file to use.")
  19. endif ()
  20. # Set the build metadata.
  21. if(NOT "$ENV{CMAKE_CI_BUILD_NAME}" STREQUAL "")
  22. set(CTEST_BUILD_NAME "$ENV{CI_PROJECT_NAME}-$ENV{CMAKE_CI_BUILD_NAME}")
  23. else()
  24. set(CTEST_BUILD_NAME "$ENV{CI_PROJECT_NAME}-$ENV{CMAKE_CONFIGURATION}")
  25. endif()
  26. set(CTEST_SITE "gitlab-ci")
  27. set(ctest_model "Experimental")
  28. # Default to Release builds.
  29. if (NOT "$ENV{CMAKE_CI_BUILD_TYPE}" STREQUAL "")
  30. set(CTEST_BUILD_CONFIGURATION "$ENV{CMAKE_CI_BUILD_TYPE}")
  31. endif ()
  32. if (NOT CTEST_BUILD_CONFIGURATION)
  33. set(CTEST_BUILD_CONFIGURATION "Release")
  34. endif ()
  35. set(CTEST_CONFIGURATION_TYPE "${CTEST_BUILD_CONFIGURATION}")
  36. # Default to using Ninja.
  37. if (NOT "$ENV{CMAKE_GENERATOR}" STREQUAL "")
  38. set(CTEST_CMAKE_GENERATOR "$ENV{CMAKE_GENERATOR}")
  39. endif ()
  40. if (NOT CTEST_CMAKE_GENERATOR)
  41. set(CTEST_CMAKE_GENERATOR "Ninja")
  42. endif ()
  43. # Set the toolset and platform if requested.
  44. if (NOT "$ENV{CMAKE_GENERATOR_PLATFORM}" STREQUAL "")
  45. set(CTEST_CMAKE_GENERATOR_PLATFORM "$ENV{CMAKE_GENERATOR_PLATFORM}")
  46. endif ()
  47. if (NOT "$ENV{CMAKE_GENERATOR_TOOLSET}" STREQUAL "")
  48. set(CTEST_CMAKE_GENERATOR_TOOLSET "$ENV{CMAKE_GENERATOR_TOOLSET}")
  49. endif ()
  50. # Determine the group to submit to.
  51. set(ctest_group "Experimental")
  52. if (NOT "$ENV{CI_MERGE_REQUEST_ID}" STREQUAL "")
  53. set(ctest_group "merge-requests")
  54. 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 "")
  55. set(ctest_model "Continuous")
  56. if (NOT "$ENV{CMAKE_CI_JOB_HELP}" STREQUAL "")
  57. set(ctest_group "Continuous Help")
  58. else()
  59. set(ctest_group "Continuous")
  60. endif()
  61. string(PREPEND CTEST_BUILD_NAME "continuous-")
  62. elseif (NOT "$ENV{CMAKE_CI_NIGHTLY}" STREQUAL "")
  63. set(ctest_model "Nightly")
  64. set(ctest_group "Nightly Expected")
  65. string(PREPEND CTEST_BUILD_NAME "nightly-")
  66. elseif ("$ENV{CI_PROJECT_PATH}" STREQUAL "cmake/cmake")
  67. if ("$ENV{CI_COMMIT_REF_NAME}" STREQUAL "master")
  68. set(ctest_group "master")
  69. elseif ("$ENV{CI_COMMIT_REF_NAME}" STREQUAL "release")
  70. set(ctest_group "release")
  71. endif ()
  72. endif ()