language: c sudo: required env: global: # GITAUTH: - secure: nSunY54Wp5HkQCHHbKwlwpbaKyqRVIu/0EnhaoJSwhM1wqerQV/E5d/2JelO9/tZgbungAO7wk/fjutRMVc7d378RTIPwS8vHpvZfEoGhCFsLoTOlqESzsZFBup2H5t1lpQ23jRHDOxlLdJy2lz5U+zd1YnYgDXqdDFjegsIYdo= - PYTHON=python2 # For tag builds we do not have the base branch in TRAVIS_BRANCH, therefore store it in BRANCH_FOR_TAG - BRANCH_FOR_TAG=$(git ls-remote origin | sed -n "\|$TRAVIS_COMMIT\s\+refs/heads/|{s///p}") dist: trusty # Make sure we have the git tags. Travis uses shallow checkout where git describe does not work git: depth: false matrix: fast_finish: true include: # # gcc-4.8 (trusty) full host and cross build with tests: # doc, cert, cross-mingw32, cross-mingw64, cross-linux32, cross-raspi, linux64, # amalgamated, shared, multithread, encryption, discovery, json, test-ns0-full, test-ns0-minimal, debian-package - os: linux compiler: gcc-4.8 addons: apt: sources: # see https://github.com/travis-ci/apt-source-whitelist/blob/master/ubuntu.json - ubuntu-toolchain-r-test packages: - mingw-w64 - gcc-mingw-w64-i686 - gcc-mingw-w64-x86-64 - binutils-mingw-w64-i686 - g++-multilib # debian packaging - cmake - debhelper - fakeroot # doc - python-sphinx - graphviz - texlive-generic-extra - texlive-fonts-recommended - texlive-latex-extra - latexmk # tests - check - libsubunit-dev - valgrind env: - MINGW=true - DEBIAN=true # # gcc-8 full host build with tests: # doc, cert, linux64, # amalgamated, shared, multithread, encryption, discovery, json, test-ns0-full, test-ns0-minimal - os: linux compiler: gcc-8 addons: apt: sources: - ubuntu-toolchain-r-test packages: - gcc-8 - gcc-8-multilib # doc - python-sphinx - graphviz - texlive-generic-extra - texlive-fonts-recommended - texlive-latex-extra - latexmk # tests - check - libsubunit-dev - valgrind # # clang-6 full host build with tests: # doc, cert, linux64, # amalgamated, shared, multithread, encryption, discovery, json, test-ns0-full, test-ns0-minimal - os: linux compiler: clang-6.0 addons: apt: sources: - llvm-toolchain-trusty-6.0 - ubuntu-toolchain-r-test packages: - clang-6.0 - clang-tidy-6.0 # doc - python-sphinx - graphviz - texlive-generic-extra - texlive-fonts-recommended - texlive-latex-extra - latexmk # tests - check - libsubunit-dev - valgrind # # clang-6 python-3 full host build with tests: # doc, cert, linux64, # amalgamated, shared, multithread, encryption, discovery, json, test-ns0-full, test-ns0-minimal - os: linux compiler: clang-6.0 addons: apt: sources: - llvm-toolchain-trusty-6.0 - ubuntu-toolchain-r-test packages: - clang-6.0 - clang-tidy-6.0 # doc - python3-sphinx - graphviz - texlive-generic-extra - texlive-fonts-recommended - texlive-latex-extra - latexmk # tests - check - libsubunit-dev - valgrind env: - PYTHON=python3 # # tcc full host build: # doc, cert, linux64, # amalgamated, shared, multithread, encryption, discovery, json, test-ns0-full, test-ns0-minimal - os: linux compiler: tcc addons: apt: packages: # doc - python-sphinx - graphviz - texlive-generic-extra - texlive-fonts-recommended - texlive-latex-extra - latexmk # tests - check - libsubunit-dev - valgrind # # clang-6 python-3 install build and minimal example: # linux64, minimal-example - os: linux compiler: clang-6.0 addons: apt: sources: - llvm-toolchain-trusty-6.0 - ubuntu-toolchain-r-test packages: - clang-6.0 - clang-tidy-6.0 env: - INSTALL=true - PYTHON=python3 - CXX=clang-6.0 # # gcc-4.8 static code analysis - os: linux compiler: gcc addons: apt: packages: - cppcheck env: - ANALYZE=true # # clang-6 static code analysis - os: linux compiler: clang-6.0 addons: apt: sources: - llvm-toolchain-trusty-6.0 - ubuntu-toolchain-r-test packages: - check - libsubunit-dev - clang-6.0 - clang-tidy-6.0 env: - ANALYZE=true - PYTHON=python3 # # clang-format code analysis # is allowed to fail (see allow_failures) - os: linux compiler: clang-6.0 addons: apt: sources: - llvm-toolchain-trusty-6.0 - ubuntu-toolchain-r-test packages: - clang-6.0 - clang-tidy-6.0 - clang-format-6.0 env: - CLANG_FORMAT=true # # DOCKER build - os: linux compiler: gcc env: - DOCKER=true # # clang-6 FUZZER build - os: linux compiler: clang-6.0 addons: apt: sources: - llvm-toolchain-trusty-6.0 - ubuntu-toolchain-r-test packages: - check - libsubunit-dev - clang-6.0 - clang-tidy-6.0 - libfuzzer-6.0-dev env: - FUZZER=true # # OSX clang build - os: osx compiler: clang # disable homebrew auto update which takes a lot of time env: HOMEBREW_NO_AUTO_UPDATE=1 cache: directories: - $HOME/Library/Caches/Homebrew # # SONAR gcc-4.9 build - os: linux compiler: gcc-4.9 addons: sonarcloud: organization: open62541 branches: - master - sonarcloud env: - SONAR=true cache: directories: - '$HOME/.sonar/cache' allow_failures: # # clang-format code analysis - env: - CLANG_FORMAT=true cache: pip: true apt: true directories: - $HOME/install - $HOME/.cache/pip # combine all the commands into one single command. See https://github.com/travis-ci/travis-ci/issues/1066 before_install: | set -eE errorTrap() { last_rv=$? if [ $last_rv -ne 0 ] ; then echo "" echo "" echo "----------------- Error -----------------" echo "" echo "---- Check additional output above!! ----" # Wait a bit until the stdout is flushed for i in 1 2 3 4 5 6 7 8 9 10; do echo "."; sleep 1; done fi exit $last_rv } trap errorTrap 0 # set paths for locally installed libs (like liburcu) export LOCAL_PKG=$HOME/install mkdir -p $LOCAL_PKG/lib mkdir -p $LOCAL_PKG/include mkdir -p $LOCAL_PKG/bin export LIBRARY_PATH=$LOCAL_PKG/lib:$LIBRARY_PATH export C_INCLUDE_PATH=$LOCAL_PKG/include:$C_INCLUDE_PATH export CPLUS_INCLUDE_PATH=$LOCAL_PKG/include:$CPLUS_INCLUDE_PATH export PKG_CONFIG_PATH=$LOCAL_PKG/lib/pkgconfig:$PKG_CONFIG_PATH export PATH=$LOCAL_PKG:$LOCAL_PKG/bin:$PATH export CMAKE_PREFIX_PATH=$LOCAL_PKG:CMAKE_PREFIX_PATH # set local path for python packages export PATH=$PATH:$HOME/.local/bin # linux export PATH=$PATH:$HOME/Library/Python #OS X export PATH=$PATH:$HOME/Library/Python/2.7/bin #OS X if [ ${TRAVIS_OS_NAME} == "linux" ]; then sh ./tools/travis/travis_linux_before_install.sh; fi if [ ${TRAVIS_OS_NAME} == "osx" ]; then sh ./tools/travis/travis_osx_before_install.sh; fi script: | set -eE errorTrap() { last_rv=$? if [ $last_rv -ne 0 ] ; then echo "" echo "" echo "----------------- Error -----------------" echo "" echo "---- Check additional output above!! ----" # Wait a bit until the stdout is flushed for i in 1 2 3 4 5 6 7 8 9 10; do echo "."; sleep 1; done fi exit $last_rv } trap errorTrap 0 if [ ${TRAVIS_OS_NAME} == "linux" ]; then sh ./tools/travis/travis_linux_script.sh; fi if [ ${TRAVIS_OS_NAME} == "osx" ]; then sh ./tools/travis/travis_osx_script.sh; fi after_success: | set -eE errorTrap() { last_rv=$? if [ $last_rv -ne 0 ] ; then echo "" echo "" echo "----------------- Error -----------------" echo "" echo "---- Check additional output above!! ----" # Wait a bit until the stdout is flushed for i in 1 2 3 4 5 6 7 8 9 10; do echo "."; sleep 1; done fi exit $last_rv } trap errorTrap 0 if [ ${TRAVIS_OS_NAME} == "linux" ]; then sh ./tools/travis/travis_linux_after_success.sh; fi # Sleep to flush travis output echo == Build success == sleep 5 after_failure: | # Sleep to flush travis output echo == Build failed == sleep 5 deploy: provider: releases api_key: # Uses token from user open62541-travis-release (managed by @Pro). Sets GITAUTH secure: dtn6ayBGoWzeVMM6xYpSRZly1XOhS/2jdiwEHd0hYZIr0dNq18CxTiqbGrUwW1JsSiXoHaGSZhUVr06O1P/tfC3Ma6i7ugyun+yXz6FdZiwirjURI8HQe+XwR4Ui3hqgQSOHLMK/xtOkjM28AN1jg9u3//Zep69xJVIGAqNT0bE= file: - open62541-win32.zip - open62541-win64.zip - open62541-linux32.tar.gz - open62541-linux64.tar.gz - open62541-raspberrypi.tar.gz - open62541.c - open62541.h - open62541*.deb file_glob: true skip_cleanup: true on: repo: open62541/open62541 tags: true condition: $MINGW=true