.travis.yml 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. ##############################################################################
  2. # Project specific settings
  3. ##############################################################################
  4. language: c
  5. cache:
  6. directories:
  7. - $HOME/third-party
  8. before_install:
  9. - cmake --version
  10. install:
  11. before_script:
  12. # Check some settings of the build server (operating system, IPv6 availability, directory)
  13. - uname -a
  14. - ifconfig
  15. - pwd
  16. - ls -la
  17. # Generate the build scripts with CMake
  18. - mkdir output
  19. - openssl version
  20. - gcc --version
  21. - cmake --version
  22. - gcc unittest/cgi_test.c -o output/cgi_test.cgi
  23. - cd output
  24. - echo cmake
  25. -G "Unix Makefiles"
  26. -DCMAKE_BUILD_TYPE=${BUILD_TYPE}
  27. -DBUILD_SHARED_LIBS=${BUILD_SHARED}
  28. "-DCIVETWEB_THIRD_PARTY_DIR=${HOME}/third-party"
  29. -DCIVETWEB_ENABLE_THIRD_PARTY_OUTPUT=YES
  30. -DCIVETWEB_ENABLE_SSL=${ENABLE_SSL}
  31. -DCIVETWEB_DISABLE_CGI=${NO_CGI}
  32. -DCIVETWEB_SERVE_NO_FILES=${NO_FILES}
  33. -DCIVETWEB_ENABLE_SSL_DYNAMIC_LOADING=${ENABLE_SSL_DYNAMIC_LOADING}
  34. -DCIVETWEB_SSL_OPENSSL_API_1_0=${OPENSSL_1_0}
  35. -DCIVETWEB_SSL_OPENSSL_API_1_1=${OPENSSL_1_1}
  36. -DCIVETWEB_SSL_OPENSSL_API_3_0=${OPENSSL_3_0}
  37. -DCIVETWEB_ENABLE_WEBSOCKETS=${ENABLE_WEBSOCKETS}
  38. -DCIVETWEB_ENABLE_CXX=${ENABLE_CXX}
  39. -DCIVETWEB_ENABLE_SERVER_STATS=${ENABLE_SERVER_STATS}
  40. -DCIVETWEB_ENABLE_LUA=${ENABLE_LUA}
  41. -DCIVETWEB_ENABLE_LUA_SHARED=${ENABLE_LUA_SHARED}
  42. -DCIVETWEB_ENABLE_DUKTAPE=${ENABLE_DUKTAPE}
  43. -DCIVETWEB_DISABLE_CACHING=${NO_CACHING}
  44. -DCIVETWEB_C_STANDARD=${C_STANDARD}
  45. -DCIVETWEB_CXX_STANDARD=${CXX_STANDARD}
  46. -DCIVETWEB_ALLOW_WARNINGS=${ALLOW_WARNINGS}
  47. -DCIVETWEB_ENABLE_IPV6=${ENABLE_IPV6}
  48. ${ADDITIONAL_CMAKE_ARGS}
  49. ..
  50. - cmake
  51. -G "Unix Makefiles"
  52. -DCMAKE_BUILD_TYPE=${BUILD_TYPE}
  53. -DBUILD_SHARED_LIBS=${BUILD_SHARED}
  54. "-DCIVETWEB_THIRD_PARTY_DIR=${HOME}/third-party"
  55. -DCIVETWEB_ENABLE_THIRD_PARTY_OUTPUT=YES
  56. -DCIVETWEB_ENABLE_SSL=${ENABLE_SSL}
  57. -DCIVETWEB_DISABLE_CGI=${NO_CGI}
  58. -DCIVETWEB_SERVE_NO_FILES=${NO_FILES}
  59. -DCIVETWEB_ENABLE_SSL_DYNAMIC_LOADING=${ENABLE_SSL_DYNAMIC_LOADING}
  60. -DCIVETWEB_SSL_OPENSSL_API_1_0=${OPENSSL_1_0}
  61. -DCIVETWEB_SSL_OPENSSL_API_1_1=${OPENSSL_1_1}
  62. -DCIVETWEB_SSL_OPENSSL_API_3_0=${OPENSSL_3_0}
  63. -DCIVETWEB_ENABLE_WEBSOCKETS=${ENABLE_WEBSOCKETS}
  64. -DCIVETWEB_ENABLE_CXX=${ENABLE_CXX}
  65. -DCIVETWEB_ENABLE_SERVER_STATS=${ENABLE_SERVER_STATS}
  66. -DCIVETWEB_ENABLE_LUA=${ENABLE_LUA}
  67. -DCIVETWEB_ENABLE_LUA_SHARED=${ENABLE_LUA_SHARED}
  68. -DCIVETWEB_ENABLE_DUKTAPE=${ENABLE_DUKTAPE}
  69. -DCIVETWEB_DISABLE_CACHING=${NO_CACHING}
  70. -DCIVETWEB_C_STANDARD=${C_STANDARD}
  71. -DCIVETWEB_CXX_STANDARD=${CXX_STANDARD}
  72. -DCIVETWEB_ALLOW_WARNINGS=${ALLOW_WARNINGS}
  73. -DCIVETWEB_ENABLE_IPV6=${ENABLE_IPV6}
  74. ${ADDITIONAL_CMAKE_ARGS}
  75. ..
  76. - ls -la
  77. - ulimit -c unlimited -S
  78. after_failure:
  79. - COREFILE=$(find . -maxdepth 1 -name "core*" | head -n 1) # find core file
  80. - if [[ -f "$COREFILE" ]]; then gdb -c "$COREFILE" example -ex "thread apply all bt" -ex "set pagination 0" -batch; fi
  81. script:
  82. - if [ "${RUN_UNITTEST}" == "1" ]; then
  83. CTEST_OUTPUT_ON_FAILURE=1 CK_FORK=yes make all test;
  84. fi
  85. - pwd
  86. - ls -la unittest
  87. - echo "Show all test logs:"
  88. - if [ "${RUN_UNITTEST}" == "1" ]; then
  89. for f in unittest/test-*.log; do printf "\n$f:\n"; cat $f; done;
  90. for f in unittest/test-*.xml; do printf "\n$f:\n"; cat $f; done;
  91. fi
  92. - echo "Build and test script DONE"
  93. after_success:
  94. #########################################################################################
  95. #########################################################################################
  96. ##### START OF BUILD MATRIX #########################################################
  97. #########################################################################################
  98. #########################################################################################
  99. matrix:
  100. fast_finish: true
  101. include:
  102. #########################################################################################
  103. ##### FREEBSD BUILD ###########=#####################################################
  104. #########################################################################################
  105. -
  106. os: freebsd
  107. sudo: required
  108. compiler: clang
  109. env:
  110. idx=20
  111. N=Clang-FREEBSD-Complete-NoLua-Release
  112. BUILD_TYPE=Release
  113. ENABLE_SSL_DYNAMIC_LOADING=YES
  114. OPENSSL_1_0=NO
  115. OPENSSL_1_1=YES
  116. ENABLE_CXX=NO
  117. ENABLE_LUA_SHARED=NO
  118. C_STANDARD=auto
  119. CXX_STANDARD=auto
  120. BUILD_SHARED=NO
  121. NO_FILES=NO
  122. ENABLE_SSL=YES
  123. NO_CGI=NO
  124. ENABLE_IPV6=YES
  125. ENABLE_WEBSOCKETS=YES
  126. ENABLE_SERVER_STATS=YES
  127. ENABLE_LUA=NO
  128. ENABLE_DUKTAPE=NO
  129. NO_CACHING=NO
  130. ALLOW_WARNINGS=YES
  131. RUN_UNITTEST=1