ci: update jenkins scripts and add .travis.yml
Change-Id: I1c5c743a310da5a32b462b69f76c97dfcdc822a9
diff --git a/.jenkins.d/01-ndn-cxx.sh b/.jenkins.d/01-ndn-cxx.sh
index c9e2a63..e627627 100755
--- a/.jenkins.d/01-ndn-cxx.sh
+++ b/.jenkins.d/01-ndn-cxx.sh
@@ -37,14 +37,14 @@
sudo rm -f /usr/local/bin/ndnsec*
sudo rm -fr /usr/local/include/ndn-cxx
-sudo rm -f /usr/local/lib/libndn-cxx*
-sudo rm -f /usr/local/lib/pkgconfig/libndn-cxx.pc
+sudo rm -f /usr/local/lib{,64}/libndn-cxx*
+sudo rm -f /usr/local/lib{,64}/pkgconfig/libndn-cxx.pc
pushd ndn-cxx >/dev/null
./waf configure --color=yes --enable-shared --disable-static --without-osx-keychain
./waf build --color=yes -j${WAF_JOBS:-1}
-sudo env "PATH=$PATH" ./waf install --color=yes
+sudo_preserve_env PATH -- ./waf install --color=yes
popd >/dev/null
popd >/dev/null
diff --git a/.jenkins.d/10-build.sh b/.jenkins.d/10-build.sh
index 9d88c33..209e10b 100755
--- a/.jenkins.d/10-build.sh
+++ b/.jenkins.d/10-build.sh
@@ -6,8 +6,14 @@
set -x
+if [[ $JOB_NAME == *"code-coverage" ]]; then
+ COVERAGE="--with-coverage"
+elif [[ -z $DISABLE_ASAN ]]; then
+ ASAN="--with-sanitizer=address"
+fi
+
# Cleanup
-sudo env "PATH=$PATH" ./waf --color=yes distclean
+sudo_preserve_env PATH -- ./waf --color=yes distclean
if [[ $JOB_NAME != *"code-coverage" && $JOB_NAME != *"limited-build" ]]; then
# Configure/build in optimized mode with tests
@@ -15,29 +21,24 @@
./waf --color=yes build -j${WAF_JOBS:-1}
# Cleanup
- sudo env "PATH=$PATH" ./waf --color=yes distclean
+ sudo_preserve_env PATH -- ./waf --color=yes distclean
# Configure/build in optimized mode without tests
./waf --color=yes configure
./waf --color=yes build -j${WAF_JOBS:-1}
# Cleanup
- sudo env "PATH=$PATH" ./waf --color=yes distclean
+ sudo_preserve_env PATH -- ./waf --color=yes distclean
fi
# Configure/build in debug mode with tests
-if [[ $JOB_NAME == *"code-coverage" ]]; then
- COVERAGE="--with-coverage"
-elif [[ -n $BUILD_WITH_ASAN || -z $TRAVIS ]]; then
- ASAN="--with-sanitizer=address"
-fi
-./waf --color=yes configure --debug --with-tests --with-examples $COVERAGE $ASAN
+./waf --color=yes configure --debug --with-tests --with-examples $ASAN $COVERAGE
./waf --color=yes build -j${WAF_JOBS:-1}
# (tests will be run against debug version)
# Install
-sudo env "PATH=$PATH" ./waf --color=yes install
+sudo_preserve_env PATH -- ./waf --color=yes install
if has Linux $NODE_LABELS; then
sudo ldconfig
diff --git a/.jenkins.d/20-tests.sh b/.jenkins.d/20-tests.sh
index 2541866..ec4461b 100755
--- a/.jenkins.d/20-tests.sh
+++ b/.jenkins.d/20-tests.sh
@@ -40,8 +40,8 @@
ASAN_OPTIONS+=":strip_path_prefix=${PWD}/"
export ASAN_OPTIONS
-export BOOST_TEST_COLOR_OUTPUT="yes"
-export NDN_LOG="*=DEBUG"
+export BOOST_TEST_BUILD_INFO=1
+export BOOST_TEST_COLOR_OUTPUT=1
# Run unit tests
./build/unit-tests $(ut_log_args)
diff --git a/.jenkins.d/README.md b/.jenkins.d/README.md
index 39fa40b..5813349 100644
--- a/.jenkins.d/README.md
+++ b/.jenkins.d/README.md
@@ -27,7 +27,7 @@
Possible values:
* empty: default build process
- * `code-coverage` (Linux OS is assumed): debug build with tests and code coverage analysis
+ * `code-coverage` (Ubuntu Linux is assumed): debug build with tests and code coverage analysis
* `limited-build`: only a single debug build with tests
- `CACHE_DIR`: the variable defines a path to folder containing cached files from previous builds,
diff --git a/.jenkins.d/util.sh b/.jenkins.d/util.sh
index a89bc27..8ddc4ba 100644
--- a/.jenkins.d/util.sh
+++ b/.jenkins.d/util.sh
@@ -16,3 +16,22 @@
set ${saved_xtrace}
return ${ret}
}
+
+sudo_preserve_env() {
+ local saved_xtrace
+ [[ $- == *x* ]] && saved_xtrace=-x || saved_xtrace=+x
+ set +x
+
+ local vars=()
+ while [[ $# -gt 0 ]]; do
+ local arg=$1
+ shift
+ case ${arg} in
+ --) break ;;
+ *) vars+=("${arg}=${!arg}") ;;
+ esac
+ done
+
+ set ${saved_xtrace}
+ sudo env "${vars[@]}" "$@"
+}
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..47579e9
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,98 @@
+language: cpp
+dist: xenial
+env:
+ global:
+ - JOB_NAME=limited-build
+ - WAF_JOBS=2
+
+matrix:
+ include:
+ # Linux/gcc
+ # https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test/+packages
+ - os: linux
+ env: COMPILER=g++-5
+ - os: linux
+ env: COMPILER=g++-6
+ - os: linux
+ env: COMPILER=g++-7
+ - os: linux
+ env: COMPILER=g++-8
+
+ # Linux/clang
+ # https://apt.llvm.org/
+ - os: linux
+ env: COMPILER=clang++-3.8
+ - os: linux
+ env: COMPILER=clang++-3.9
+ - os: linux
+ env: COMPILER=clang++-4.0
+ - os: linux
+ env: COMPILER=clang++-5.0
+ - os: linux
+ env: COMPILER=clang++-6.0
+ # temporarily disable AddressSanitizer on clang-7 and later
+ # due to https://bugs.llvm.org/show_bug.cgi?id=40808
+ - os: linux
+ env: COMPILER=clang++-7 DISABLE_ASAN=yes
+ - os: linux
+ env: COMPILER=clang++-8 DISABLE_ASAN=yes
+ - os: linux
+ env: COMPILER=clang++-9 DISABLE_ASAN=yes
+
+ # macOS/clang
+ # https://docs.travis-ci.com/user/reference/osx/#macos-version
+ - os: osx
+ osx_image: xcode8.3
+ env: OSX_VERSION=10.12
+ - os: osx
+ osx_image: xcode9.2
+ env: OSX_VERSION=10.12
+ - os: osx
+ osx_image: xcode9.4
+ env: OSX_VERSION=10.13
+ - os: osx
+ osx_image: xcode10.1
+ env: OSX_VERSION=10.13
+ - os: osx
+ osx_image: xcode10.2
+ env: OSX_VERSION=10.14
+
+ allow_failures:
+ - env: COMPILER=clang++-9 DISABLE_ASAN=yes
+
+ fast_finish: true
+
+install: |
+ case ${COMPILER} in
+ g++-5)
+ ;;
+ g++-*)
+ travis_retry sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
+ travis_retry sudo apt-get -qq update
+ travis_retry sudo apt-get -qy install "${COMPILER}"
+ ;;
+ clang++-*)
+ CLANG_VERSION=${COMPILER/clang++}
+ if [[ ${CLANG_VERSION} != "-3."* ]]; then
+ travis_retry wget -nv -O - "https://apt.llvm.org/llvm-snapshot.gpg.key" | sudo apt-key add -
+ travis_retry sudo add-apt-repository -y "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial${CLANG_VERSION/-9} main"
+ fi
+ travis_retry sudo apt-get -qq update
+ travis_retry sudo apt-get -qy install "clang${CLANG_VERSION}"
+ ;;
+ esac
+
+before_script:
+ - if [[ ${TRAVIS_OS_NAME} == linux ]]; then export NODE_LABELS="Linux Ubuntu Ubuntu-16.04"; fi
+ - if [[ ${TRAVIS_OS_NAME} == osx ]]; then export NODE_LABELS="OSX OSX-${OSX_VERSION}"; fi
+ - if [[ ${OSX_VERSION} == 10.12 ]]; then brew update; fi
+ # workaround for https://github.com/Homebrew/homebrew-core/issues/26358
+ - if [[ ${OSX_VERSION} == 10.12 ]]; then brew outdated python || brew upgrade python; fi
+ # workaround for https://github.com/travis-ci/travis-ci/issues/6688
+ - if [[ ${OSX_VERSION} == 10.12 ]]; then /usr/bin/yes | pip2 uninstall numpy || true; fi
+ - if [[ -n ${COMPILER} ]]; then export CXX=${COMPILER}; fi
+ - ${CXX:-c++} --version
+ - python --version
+
+script:
+ - ./.jenkins