blob: 9f899541c9600e27687dcb0beae1b6fc98a76f8e [file] [log] [blame]
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