.gitlab-ci.yml 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. # we utilize the images generated by the build-images project, to
  2. # speed up CI runs. We also use ccache and store config.cache
  3. # to speed up compilation. We include a version number in cache
  4. # name to allow expiration of old caches.
  5. cache:
  6. key: "$CI_JOB_NAME-ver1"
  7. paths:
  8. - cache/
  9. before_script:
  10. # CCache Config
  11. - mkdir -p cache
  12. - export CCACHE_BASEDIR=${PWD}
  13. - export CCACHE_DIR=${PWD}/cache
  14. - export CC="ccache gcc"
  15. after_script:
  16. # somehow after_script looses environment
  17. - export CCACHE_BASEDIR=${PWD}
  18. - export CCACHE_DIR=${PWD}/cache
  19. - ccache -s
  20. variables:
  21. BUILD_IMAGES_PROJECT: libmicrohttpd/build-images
  22. DEBIAN_BUILD: buildenv-debian-stretch
  23. MINGW_BUILD: buildenv-debian-mingw
  24. GET_SOURCES_ATTEMPTS: "3"
  25. CONFIGURE_BASE_FLAGS: --enable-asserts --cache-file cache/config.cache
  26. CFLAGS_DEFAULT: -O0 -g -ggdb3 -Wall -Wextra
  27. # In this build we combine
  28. # * gcc
  29. # * check
  30. gcc/Stretch:
  31. image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_BUILD
  32. script:
  33. - export CFLAGS=$CFLAGS_DEFAULT
  34. - ./bootstrap
  35. - ./configure $CONFIGURE_BASE_FLAGS
  36. - make -j$(nproc)
  37. - make check
  38. tags:
  39. - shared
  40. - linux
  41. artifacts:
  42. expire_in: 2 weeks
  43. when: on_failure
  44. paths:
  45. - ./*.log
  46. - src/*/*.log
  47. - src/*/*/*.log
  48. # In this build we combine
  49. # * clang
  50. # * ASan, UBSan
  51. # * check
  52. Sanitizers/Stretch:
  53. image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_BUILD
  54. script:
  55. - export CFLAGS="$CFLAGS_DEFAULT -fno-omit-frame-pointer -fsanitize=undefined -fsanitize=address"
  56. - ./bootstrap
  57. - export CC="ccache clang"
  58. - export UBSAN_OPTIONS=print_stacktrace=1
  59. - export ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-3.8/bin/llvm-symbolizer
  60. - ./configure $CONFIGURE_BASE_FLAGS --disable-doc
  61. - make check
  62. tags:
  63. - shared
  64. - linux
  65. artifacts:
  66. expire_in: 2 weeks
  67. when: on_failure
  68. paths:
  69. - ./*.log
  70. - src/*/*.log
  71. - src/*/*/*.log
  72. Scan-Build/Debian:
  73. image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_BUILD
  74. script:
  75. - export CFLAGS=$CFLAGS_DEFAULT
  76. - ./bootstrap
  77. - scan-build ./configure $CONFIGURE_BASE_FLAGS
  78. - scan-build -v -enable-checker security,nullability --status-bugs -o scan-build make -j$(nproc)
  79. - scan-build -v -enable-checker security,nullability --status-bugs -o scan-build make check
  80. tags:
  81. - shared
  82. - linux
  83. except:
  84. - tags
  85. artifacts:
  86. expire_in: 2 weeks
  87. when: on_failure
  88. paths:
  89. - scan-build/*
  90. MinGW/Debian:
  91. image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$MINGW_BUILD
  92. script:
  93. - export CC="ccache $PREFIX-gcc"
  94. - ./bootstrap
  95. - ./configure $CONFIGURE_BASE_FLAGS --build=x86_64-pc-linux-gnu --host=$PREFIX
  96. - make -j$(nproc)
  97. tags:
  98. - shared
  99. - linux
  100. dist/Stretch:
  101. image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_BUILD
  102. script:
  103. - export CFLAGS=$CFLAGS_DEFAULT
  104. - ./bootstrap
  105. - ./configure $CONFIGURE_BASE_FLAGS
  106. - make -j$(nproc) dist
  107. tags:
  108. - shared
  109. - linux
  110. artifacts:
  111. name: "$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA"
  112. expire_in: 2 weeks
  113. when: on_success
  114. paths:
  115. - ./libmicrohttpd-*.*.*.tar.??