.travis.yml 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. # Travis CI script
  2. language: c
  3. os:
  4. - linux
  5. - osx
  6. dist: bionic
  7. cache: ccache
  8. env:
  9. matrix:
  10. - BUILD_TYPE=default CURVE=tweetnacl DRAFT=enabled
  11. - BUILD_TYPE=cmake CURVE=tweetnacl
  12. - BUILD_TYPE=default
  13. # tokens to deploy releases on OBS and create/delete temporary branch on Github.
  14. # 1) Create a token on https://github.com/settings/tokens/new with "public_repo"
  15. # capability and encrypt it with travis encrypt --org -r zeromq/libzmq GH_TOKEN="<token>"
  16. # 2) Create 2 OBS tokens with osc token --create network:messaging:zeromq:release-<stable|draft> libzmq
  17. # encrypt them with travis encrypt --org -r zeromq/libzmq OBS_<STABLE|DRAFT>_TOKEN="<token>"
  18. global:
  19. - secure: aaIs9Y44FYp9VFCqa6LLD4illBH4aUfbS0zzzbAQ5xJvD6NfBsMiKEIhf/kRNCHAtP+1VfQVOejTD6/i08ALsVr3cZD9oB/t7874tz2/jeZUIhRNo+1KwyaVqNg0yUSV6ASIoq4aOfuGnjBlezNQ8LQ2bjQB2m4Enl5wxoYcYdA=
  20. - secure: YFrcedBIKe0NR1WC6qQi9phZgtnzOiBIXm40TirvCtstV4eVnSouKgtQfLLArZ4o2tjflq4grQQNo1rJatvyi5YPOXsMcndsni18S+4Ffu8qbECdtPrK52vBweuf7q9oV9Ydax0Fm4bEqEMOZ2/mRBy3nK+mgsE3upeMwyWR0Zw=
  21. - secure: lbZSzmqN39QdJwewKOZgq/1ijPKuyx9MFrGzMqXj2+eOSlaZS/tNavHMdKJOev+qJGK9wxmwzxOxS10AiH+AvN7WBacXX4ZtudjScz2HKJRDWTKyzMbzyScq51afniItzrsm+Vo8NHkenNFkux0sSbh0aHlpkLwrGQu+WZWcDN4=
  22. - secure: "ZFL7hLJlGwYix8fF835OnQYakBt/o5iS7IfSW7el44ejEvGAOM9O5/ufxCcqSqn8Np7nOaM3RriAVTqWPZD6S7tMeflGTSGYHPYwWUc83z4rUPyG2FWVKXdB8ufpebAwu3hCgLiSmVeoQG47dl6xNk1oKCd+3UIjgz33u1Ecfps="
  23. matrix:
  24. include:
  25. - if: type = cron OR (branch =~ analyze$ AND type = push)
  26. env: BUILD_TYPE=cmake CLANG_TIDY=/usr/bin/clang-tidy-10 CC=clang-10 CXX=clang++-10
  27. os: linux
  28. compiler: clang
  29. addons:
  30. apt:
  31. sources:
  32. - ubuntu-toolchain-r-test
  33. - llvm-toolchain-10
  34. packages:
  35. - clang-10
  36. - clang-tools-10
  37. - clang-tidy-10
  38. - env: BUILD_TYPE=default CURVE=tweetnacl IPv6=ON
  39. os: linux
  40. dist: precise
  41. - env: BUILD_TYPE=coverage CURVE=tweetnacl DRAFT=enabled
  42. os: linux
  43. dist: xenial
  44. addons:
  45. apt:
  46. packages:
  47. - lcov
  48. - env: BUILD_TYPE=valgrind CURVE=tweetnacl DRAFT=enabled TLS=enabled
  49. os: linux
  50. dist: xenial
  51. addons:
  52. apt:
  53. packages:
  54. - valgrind
  55. - libgnutls-dev
  56. - env: BUILD_TYPE=default CURVE=libsodium GSSAPI=enabled PGM=enabled NORM=enabled
  57. os: linux
  58. addons:
  59. apt:
  60. sources:
  61. - sourceline: 'deb http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_14.04/ ./'
  62. key_url: 'http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_14.04/Release.key'
  63. packages:
  64. - libkrb5-dev
  65. - libnorm-dev
  66. - libpgm-dev
  67. - libsodium-dev
  68. - asciidoc
  69. - xmlto
  70. - env: BUILD_TYPE=default DRAFT=enabled TLS=enabled
  71. os: linux
  72. dist: xenial
  73. addons:
  74. apt:
  75. packages:
  76. - libgnutls-dev
  77. - env: BUILD_TYPE=default CURVE=libsodium DRAFT=enabled GSSAPI=enabled PGM=enabled NORM=enabled TIPC=enabled USE_NSS=yes
  78. os: linux
  79. addons:
  80. apt:
  81. sources:
  82. - sourceline: 'deb http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_14.04/ ./'
  83. key_url: 'http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_14.04/Release.key'
  84. packages:
  85. - libkrb5-dev
  86. - libnorm-dev
  87. - libpgm-dev
  88. - libsodium-dev
  89. - libnss3-dev
  90. - libbsd-dev
  91. - env: BUILD_TYPE=default CURVE=libsodium DRAFT=enabled
  92. os: osx
  93. - env: BUILD_TYPE=default CURVE=libsodium DRAFT=enabled ADDRESS_SANITIZER=enabled
  94. os: linux
  95. addons:
  96. apt:
  97. packages:
  98. - libsodium-dev
  99. - env: BUILD_TYPE=android CURVE=tweetnacl
  100. os: linux
  101. dist: trusty
  102. - env: BUILD_TYPE=cmake DO_CLANG_FORMAT_CHECK=1 CLANG_FORMAT=/usr/lib/llvm-8/bin/clang-format
  103. os: linux
  104. addons:
  105. apt:
  106. packages:
  107. - clang-format-8
  108. - env: BUILD_TYPE=default POLLER=poll
  109. os: linux
  110. - env: BUILD_TYPE=default POLLER=select
  111. os: linux
  112. - env: CXX=clang++ BUILD_TYPE=default CURVE=libsodium GSSAPI=enabled PGM=enabled NORM=enabled FORCE_98=enabled
  113. os: linux
  114. compiler: clang
  115. addons:
  116. apt:
  117. sources:
  118. - sourceline: 'deb http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_14.04/ ./'
  119. key_url: 'http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_14.04/Release.key'
  120. packages:
  121. - libkrb5-dev
  122. - libnorm-dev
  123. - libpgm-dev
  124. - libsodium-dev
  125. - env: BUILD_TYPE=abi-compliance-checker
  126. os: linux
  127. dist: xenial
  128. addons:
  129. apt:
  130. packages:
  131. - abi-dumper
  132. - abi-compliance-checker
  133. before_install:
  134. - if [ $TRAVIS_OS_NAME == "osx" -a $BUILD_TYPE == "android" ] ; then brew update; brew install binutils ; fi
  135. - if [ $TRAVIS_OS_NAME == "osx" -a $CURVE == "libsodium" ] ; then brew update; brew install libsodium ; fi
  136. # To allow sonar to process history information, unshallow clone first.
  137. - if [ -n "$CLANG_TIDY" ] ; then
  138. git fetch --unshallow ;
  139. curl -L https://sonarcloud.io/static/cpp/build-wrapper-linux-x86.zip -o build-wrapper-linux-x86.zip ;
  140. unzip build-wrapper-linux-x86.zip ;
  141. export SONARCLOUD_BUILD_WRAPPER_PATH="$(pwd)/build-wrapper-linux-x86/" ;
  142. curl -L https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.2.0.1873-linux.zip -o sonar-scanner-cli.zip ;
  143. unzip sonar-scanner-cli.zip ;
  144. export SONAR_SCANNER_CLI_PATH="$(pwd)/sonar-scanner-4.2.0.1873-linux/bin/" ;
  145. fi
  146. before_script:
  147. # ZMQ stress tests need more open socket (files) than the usual default
  148. # On OSX, it seems the way to set the max files limit is constantly changing, so
  149. # try to use all known knobs to ensure compatibility across various versions
  150. - if [ $TRAVIS_OS_NAME == "osx" ] ; then sudo sysctl -w kern.maxfiles=64000 ; sudo sysctl -w kern.maxfilesperproc=64000 ; sudo launchctl limit maxfiles 64000 64000 ; ulimit -n 64000; fi
  151. # Build and check this project according to the BUILD_TYPE
  152. script: ./ci_build.sh
  153. # Deploy tags
  154. before_deploy:
  155. - . ./ci_deploy.sh
  156. deploy:
  157. provider: releases
  158. api_key:
  159. secure: vGB5E+A8wxm2J1GJZzmIgT9PrjEzvd9gE8iui8FyxSbxAsW9vFZFGZC/21sTtpVcmRarwQCHH1UEbtg+nJwN2iD9YzMRnSVks8xqP+b709YW+VXaMuhZgTzWa74IorQku7NuvLibvQk72/OSgdwPGaNJ6f5AX9pnWVWbEoW1svE=
  160. file_glob: true
  161. file: ${LIBZMQ_DEPLOYMENT}
  162. skip_cleanup: true
  163. on:
  164. repo: zeromq/libzmq
  165. branch: master
  166. tags: true
  167. condition: "$TRAVIS_OS_NAME =~ (linux) && $BUILD_TYPE =~ (default) && $CURVE =~ (libsodium) && -z $DRAFT"