.travis.yml 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383
  1. language: c
  2. sudo: required
  3. env:
  4. global:
  5. # GITAUTH:
  6. - secure: nSunY54Wp5HkQCHHbKwlwpbaKyqRVIu/0EnhaoJSwhM1wqerQV/E5d/2JelO9/tZgbungAO7wk/fjutRMVc7d378RTIPwS8vHpvZfEoGhCFsLoTOlqESzsZFBup2H5t1lpQ23jRHDOxlLdJy2lz5U+zd1YnYgDXqdDFjegsIYdo=
  7. dist: trusty
  8. matrix:
  9. fast_finish: true
  10. include:
  11. #
  12. # gcc-4.8 (trusty) full host and cross build:
  13. # doc, cert, cross-mingw32, cross-mingw64, cross-linux32, cross-raspi, linux64,
  14. # amalgamated, shared, multithread, encryption, discovery, json, test-ns0-full, test-ns0-minimal, debian-package
  15. - os: linux
  16. addons:
  17. apt:
  18. sources:
  19. # see https://github.com/travis-ci/apt-source-whitelist/blob/master/ubuntu.json
  20. - ubuntu-toolchain-r-test
  21. packages:
  22. - check
  23. # cross-mingw
  24. - mingw-w64
  25. - g++-mingw-w64-i686
  26. - g++-mingw-w64-x86-64
  27. - binutils-mingw-w64-i686
  28. # debian packaging
  29. - debhelper
  30. - fakeroot
  31. #
  32. - gcc-multilib
  33. - g++-multilib
  34. - libsubunit-dev
  35. - libx11-dev
  36. - python-six
  37. # doc
  38. - python-sphinx
  39. - graphviz
  40. - texlive-generic-extra
  41. - texlive-fonts-recommended
  42. - texlive-latex-extra
  43. - latexmk
  44. #
  45. - valgrind
  46. - wget
  47. - xutils-dev
  48. - zip
  49. env:
  50. # - CC=gcc-4.8
  51. # - CXX=g++-4.8
  52. - PYTHON=python2
  53. - MINGW=true
  54. - DEBIAN=true
  55. #
  56. # gcc-8 full host build:
  57. # doc, cert, linux64,
  58. # amalgamated, shared, multithread, encryption, discovery, json, test-ns0-full, test-ns0-minimal
  59. - os: linux
  60. addons:
  61. apt:
  62. sources:
  63. - ubuntu-toolchain-r-test
  64. packages:
  65. - check
  66. - gcc-8
  67. - gcc-8-multilib
  68. - g++-8
  69. - g++-8-multilib
  70. - graphviz
  71. - linux-libc-dev:i386
  72. - python-six
  73. # doc
  74. - python-sphinx
  75. - graphviz
  76. - texlive-generic-extra
  77. - texlive-fonts-recommended
  78. - texlive-latex-extra
  79. - latexmk
  80. #
  81. - valgrind
  82. env:
  83. - CC=gcc-8
  84. - CXX=g++-8
  85. - PYTHON=python2
  86. #
  87. # clang-6 full host build:
  88. # doc, cert, linux64,
  89. # amalgamated, shared, multithread, encryption, discovery, json, test-ns0-full, test-ns0-minimal
  90. - os: linux
  91. addons:
  92. apt:
  93. sources:
  94. - llvm-toolchain-trusty-6.0
  95. - ubuntu-toolchain-r-test
  96. packages:
  97. - check
  98. - clang-6.0
  99. - clang-tidy-6.0
  100. # doc
  101. - python-sphinx
  102. - graphviz
  103. - texlive-generic-extra
  104. - texlive-fonts-recommended
  105. - texlive-latex-extra
  106. - latexmk
  107. #
  108. - valgrind
  109. env:
  110. - CC=clang-6.0
  111. - CXX=clang++-6.0
  112. - PYTHON=python2
  113. #
  114. # clang-6 python-3 full host build:
  115. # doc, cert, linux64,
  116. # amalgamated, shared, multithread, encryption, discovery, json, test-ns0-full, test-ns0-minimal
  117. - os: linux
  118. addons:
  119. apt:
  120. sources:
  121. - llvm-toolchain-trusty-6.0
  122. - ubuntu-toolchain-r-test
  123. packages:
  124. - check
  125. - clang-6.0
  126. - clang-tidy-6.0
  127. - python3-six
  128. # doc
  129. - python3-sphinx
  130. - graphviz
  131. - texlive-generic-extra
  132. - texlive-fonts-recommended
  133. - texlive-latex-extra
  134. - latexmk
  135. #
  136. - valgrind
  137. env:
  138. - CC=clang-6.0
  139. - CXX=clang++-6.0
  140. - PYTHON=python3
  141. #
  142. # tcc full host build:
  143. # doc, cert, linux64,
  144. # amalgamated, shared, multithread, encryption, discovery, json, test-ns0-full, test-ns0-minimal
  145. - os: linux
  146. addons:
  147. apt:
  148. packages:
  149. - check
  150. - python3-six
  151. # doc
  152. - python3-sphinx
  153. - graphviz
  154. - texlive-generic-extra
  155. - texlive-fonts-recommended
  156. - texlive-latex-extra
  157. - latexmk
  158. #
  159. env:
  160. - CC=tcc
  161. - PYTHON=python2
  162. #
  163. # clang-6 python-3 install build and minimal example:
  164. # linux64, minimal-example
  165. - os: linux
  166. addons:
  167. apt:
  168. sources:
  169. - llvm-toolchain-trusty-6.0
  170. - ubuntu-toolchain-r-test
  171. packages:
  172. - clang-6.0
  173. - clang-tidy-6.0
  174. - python3-six
  175. - valgrind
  176. env:
  177. - INSTALL=true
  178. - CC=clang-6.0
  179. - CXX=clang++-6.0
  180. - PYTHON=python3
  181. #
  182. # gcc-4.8 static code analysis
  183. - os: linux
  184. addons:
  185. apt:
  186. packages:
  187. - cppcheck
  188. env:
  189. - ANALYZE=true
  190. - CC=gcc-4.8
  191. - CXX=g++-4.8
  192. #
  193. # clang-6 static code analysis
  194. - os: linux
  195. addons:
  196. apt:
  197. sources:
  198. - llvm-toolchain-trusty-6.0
  199. - ubuntu-toolchain-r-test
  200. packages:
  201. # - check
  202. - clang-6.0
  203. - clang-tidy-6.0
  204. env:
  205. - ANALYZE=true
  206. - PYTHON=python3
  207. - CC=clang-6.0
  208. - CXX=clang++-6.0
  209. #- os: linux
  210. # compiler: gcc
  211. # env: LINT=true
  212. #
  213. # DOCKER build
  214. - os: linux
  215. env:
  216. - DOCKER=true
  217. #
  218. # clang-6 FUZZER build
  219. - os: linux
  220. addons:
  221. apt:
  222. sources:
  223. - llvm-toolchain-trusty-6.0
  224. - ubuntu-toolchain-r-test
  225. packages:
  226. - check
  227. - clang-6.0
  228. - clang-tidy-6.0
  229. - libfuzzer-6.0-dev
  230. # - python-six
  231. # - python3-six
  232. env:
  233. - FUZZER=true
  234. #
  235. # OSX clang-6 build
  236. - os: osx
  237. compiler: clang
  238. # disable homebrew auto update which takes a lot of time
  239. env: HOMEBREW_NO_AUTO_UPDATE=1
  240. cache:
  241. directories:
  242. - $HOME/Library/Caches/Homebrew
  243. #
  244. # SONAR gcc-4.9 build
  245. - os: linux
  246. addons:
  247. sonarcloud:
  248. organization: open62541
  249. branches:
  250. - master
  251. - sonarcloud
  252. env:
  253. - SONAR=true
  254. - CC=gcc-4.9
  255. - CXX=g++-4.9
  256. - PYTHON=python2
  257. cache:
  258. directories:
  259. - '$HOME/.sonar/cache'
  260. cache:
  261. pip: true
  262. apt: true
  263. directories:
  264. - $HOME/install
  265. - $HOME/.cache/pip
  266. # combine all the commands into one single command. See https://github.com/travis-ci/travis-ci/issues/1066
  267. before_install: |
  268. set -eE
  269. errorTrap() {
  270. last_rv=$?
  271. if [ $last_rv -ne 0 ] ; then
  272. echo ""
  273. echo ""
  274. echo "----------------- Error -----------------"
  275. echo ""
  276. echo "---- Check additional output above!! ----"
  277. # Wait a bit until the stdout is flushed
  278. for i in 1 2 3 4 5 6 7 8 9 10; do echo "."; sleep 1; done
  279. fi
  280. exit $last_rv
  281. }
  282. trap errorTrap 0
  283. # set paths for locally installed libs (like liburcu)
  284. export LOCAL_PKG=$HOME/install
  285. mkdir -p $LOCAL_PKG/lib
  286. mkdir -p $LOCAL_PKG/include
  287. mkdir -p $LOCAL_PKG/bin
  288. export LIBRARY_PATH=$LOCAL_PKG/lib:$LIBRARY_PATH
  289. export C_INCLUDE_PATH=$LOCAL_PKG/include:$C_INCLUDE_PATH
  290. export CPLUS_INCLUDE_PATH=$LOCAL_PKG/include:$CPLUS_INCLUDE_PATH
  291. export PKG_CONFIG_PATH=$LOCAL_PKG/lib/pkgconfig:$PKG_CONFIG_PATH
  292. export PATH=$LOCAL_PKG:$LOCAL_PKG/bin:$PATH
  293. export CMAKE_PREFIX_PATH=$LOCAL_PKG:CMAKE_PREFIX_PATH
  294. # set local path for python packages
  295. export PATH=$PATH:$HOME/.local/bin # linux
  296. export PATH=$PATH:$HOME/Library/Python #OS X
  297. export PATH=$PATH:$HOME/Library/Python/2.7/bin #OS X
  298. if [ ${TRAVIS_OS_NAME} == "linux" ]; then sh ./tools/travis/travis_linux_before_install.sh; fi
  299. if [ ${TRAVIS_OS_NAME} == "osx" ]; then sh ./tools/travis/travis_osx_before_install.sh; fi
  300. script: |
  301. set -eE
  302. errorTrap() {
  303. last_rv=$?
  304. if [ $last_rv -ne 0 ] ; then
  305. echo ""
  306. echo ""
  307. echo "----------------- Error -----------------"
  308. echo ""
  309. echo "---- Check additional output above!! ----"
  310. # Wait a bit until the stdout is flushed
  311. for i in 1 2 3 4 5 6 7 8 9 10; do echo "."; sleep 1; done
  312. fi
  313. exit $last_rv
  314. }
  315. trap errorTrap 0
  316. if [ ${TRAVIS_OS_NAME} == "linux" ]; then sh ./tools/travis/travis_linux_script.sh; fi
  317. if [ ${TRAVIS_OS_NAME} == "osx" ]; then sh ./tools/travis/travis_osx_script.sh; fi
  318. after_success: |
  319. set -eE
  320. errorTrap() {
  321. last_rv=$?
  322. if [ $last_rv -ne 0 ] ; then
  323. echo ""
  324. echo ""
  325. echo "----------------- Error -----------------"
  326. echo ""
  327. echo "---- Check additional output above!! ----"
  328. # Wait a bit until the stdout is flushed
  329. for i in 1 2 3 4 5 6 7 8 9 10; do echo "."; sleep 1; done
  330. fi
  331. exit $last_rv
  332. }
  333. trap errorTrap 0
  334. if [ ${TRAVIS_OS_NAME} == "linux" ]; then sh ./tools/travis/travis_linux_after_success.sh; fi
  335. # Sleep to flush travis output
  336. echo == Build success ==
  337. sleep 5
  338. after_failure: |
  339. # Sleep to flush travis output
  340. echo == Build failed ==
  341. sleep 5
  342. deploy:
  343. provider: releases
  344. api_key:
  345. secure: PKCoA7MBRtHloIbNF4Qj5LQyCafjekfVeFXlMBd9KmC0ynNuef+D7nn38f/jo25/b0Ii7r+hgslkQPezbKyEqo2zcCB8Pn8TWau2hbzKM/dUCPoN90HVaQcRjUi8P2Y+QkouwyPWSujBL35/X5QiAntRotCSbZx4fkyiN8cU95o=
  346. file:
  347. - open62541-win32.zip
  348. - open62541-win64.zip
  349. - open62541-linux32.tar.gz
  350. - open62541-linux64.tar.gz
  351. - open62541-raspberrypi.tar.gz
  352. - open62541.c
  353. - open62541.h
  354. - open62541*.deb
  355. file_glob: true
  356. skip_cleanup: true
  357. on:
  358. repo: open62541/open62541
  359. tags: true
  360. condition: $CC = gcc-4.8 && $ANALYZE = false