# Copyright (c) 2016-2019, Linaro Limited # Copyright (c) 2019-2020, Nokia # All rights reserved. # SPDX-License-Identifier: BSD-3-Clause # # Please update xxxx for your Coverity token and notification email if required # pushing to github/master will run make check # pushing to github/coverity_scan will also launch a static analysis # See https://scan.coverity.com/travis_ci # # Travis uses Docker images which are maintained here: # https://github.com/OpenDataPlane/odp-docker-images # CI scripts are maintained under ./scripts/ci/ directory # which is passed to the containers during a test run. # # Prebuilt Docker images are stored in Docker Hub under 'opendataplane' # namespace. Set DOCKER_NAMESPACE Travis environment variable to use a custom # namespace. To increase Docker Hub pull quota set DOCKER_USERNAME and # DOCKER_TOKEN environment variables accordingly. language: c os: linux dist: xenial stages: - "build only" - test #addons: # coverity_scan: # project: # name: "$TRAVIS_REPO_SLUG" # notification_email: xxxx # build_command_prepend: "./bootstrap && ./configure --enable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-user-guides --enable-test-example" # build_command: "make" # branch_pattern: coverity_scan cache: ccache: true pip: true directories: - netmap - $HOME/doxygen-install compiler: - gcc - clang env: global: # # By default, OpenDataPlane CODECOV_TOKEN token is used. It's OK to use # it for individual commit validation. If you want to track test history # you need to generate a new one at https://codecov.io specific for your # repo. - CODECOV_TOKEN=a733c34c-5f5c-4ff1-af4b-e9f5edb1ab5e - OS=ubuntu_18.04 - ARCH=x86_64 - CHECK=1 - NETMAP=0 jobs: - CHECK=0 CONF="CFLAGS=-O3" - CHECK=0 CONF="CFLAGS=-O0 --enable-debug --enable-debug-print" - CHECK=0 CONF="--enable-lto" - CHECK=0 CONF="--enable-lto --disable-abi-compat" - CHECK=0 ARCH=arm64 - CHECK=0 ARCH=arm64 OS=ubuntu_20.04 - CHECK=0 ARCH=armhf - CHECK=0 ARCH=ppc64el - CHECK=0 ARCH=i386 - CHECK=0 ARCH=arm64 CONF="--disable-abi-compat" - CHECK=0 ARCH=armhf CONF="--disable-abi-compat" - CHECK=0 ARCH=ppc64el CONF="--disable-abi-compat" - CHECK=0 ARCH=i386 CONF="--disable-abi-compat" - CONF="" - CONF="--disable-abi-compat" - CONF="--enable-deprecated" - CONF="--enable-dpdk-zero-copy --disable-static-applications" - NETMAP=1 CONF="" - NETMAP=1 CONF="--disable-static-applications" - CONF="--disable-host-optimization" - CONF="--disable-host-optimization --disable-abi-compat" - CHECK=0 CONF="--enable-pcapng-support" - CHECK=0 OS=centos_7 - CONF="--without-openssl --without-pcap" - OS=ubuntu_16.04 - OS=ubuntu_20.04 before_install: - if [ -n "${DOCKER_USERNAME}" -a -n "${DOCKER_TOKEN}" ] ; then echo ${DOCKER_TOKEN} | docker login --username ${DOCKER_USERNAME} --password-stdin ; else echo "Using Docker Hub anonymously. May run out of pull quota." ; fi install: - if [ ${NETMAP} -eq 1 ] ; then echo "Installing NETMAP"; sudo apt-get install linux-headers-`uname -r` ; CDIR=`pwd` ; git -c advice.detachedHead=false clone -q --depth=1 --single-branch --branch=v13.0 https://github.com/luigirizzo/netmap.git; pushd netmap/LINUX; ./configure --drivers= ; make -j $(nproc); popd; sudo insmod ./netmap/LINUX/netmap.ko; CONF="$CONF --with-netmap-path=/odp/netmap"; fi script: - if [ -z "${DOCKER_NAMESPACE}" ] ; then export DOCKER_NAMESPACE="opendataplane"; fi - if [ ${CHECK} -eq 0 ] ; then docker run -i -t -v `pwd`:/odp --shm-size 8g -e CC="${CC}" -e CONF="${CONF}" ${DOCKER_NAMESPACE}/travis-odp-${OS}-${ARCH} /odp/scripts/ci/build_${ARCH}.sh ; else echo "Running test" ; docker run --privileged -i -t -v `pwd`:/odp --shm-size 8g -e CC="${CC}" -e CONF="${CONF}" ${DOCKER_NAMESPACE}/travis-odp-${OS}-${ARCH} /odp/scripts/ci/check.sh ; fi jobs: exclude: - compiler: gcc env: CHECK=0 ARCH=arm64 - compiler: gcc env: CHECK=0 ARCH=i386 - compiler: clang env: CHECK=0 CONF="--enable-lto" - compiler: clang env: CHECK=0 CONF="--enable-lto --disable-abi-compat" include: - stage: test env: TEST=coverage compiler: gcc script: - if [ -z "${DOCKER_NAMESPACE}" ] ; then export DOCKER_NAMESPACE="opendataplane"; fi - docker run --privileged -i -t -v `pwd`:/odp --shm-size 8g -e CODECOV_TOKEN="${CODECOV_TOKEN}" -e CC="${CC}" ${DOCKER_NAMESPACE}/travis-odp-${OS}-${ARCH} /odp/scripts/ci/coverage.sh - stage: test env: TEST=scheduler_sp compiler: gcc script: - if [ -z "${DOCKER_NAMESPACE}" ] ; then export DOCKER_NAMESPACE="opendataplane"; fi - docker run --privileged -i -t -v `pwd`:/odp --shm-size 8g -e CC="${CC}" -e CONF="" -e ODP_SCHEDULER=sp ${DOCKER_NAMESPACE}/travis-odp-${OS}-${ARCH} /odp/scripts/ci/check.sh - stage: test env: TEST=scheduler_scalable compiler: gcc script: - if [ -z "${DOCKER_NAMESPACE}" ] ; then export DOCKER_NAMESPACE="opendataplane"; fi - docker run --privileged -i -t -v `pwd`:/odp --shm-size 8g -e CC="${CC}" -e CONF="" -e ODP_SCHEDULER=scalable ${DOCKER_NAMESPACE}/travis-odp-${OS}-${ARCH} /odp/scripts/ci/check.sh - stage: test env: TEST=process_mode install: - true compiler: gcc script: - if [ -z "${DOCKER_NAMESPACE}" ] ; then export DOCKER_NAMESPACE="opendataplane"; fi - docker run --privileged -i -t -v `pwd`:/odp --shm-size 8g -e CC="${CC}" -e CONF="" -e ODP_CONFIG_FILE=/odp/platform/linux-generic/test/process-mode.conf -e ODPH_PROC_MODE=1 ${DOCKER_NAMESPACE}/travis-odp-${OS}-${ARCH} /odp/scripts/ci/check.sh - stage: test env: TEST=inline_timer install: - true compiler: gcc script: - if [ -z "${DOCKER_NAMESPACE}" ] ; then export DOCKER_NAMESPACE="opendataplane"; fi - docker run --privileged -i -t -v `pwd`:/odp --shm-size 8g -e CC="${CC}" -e CONF="" -e ODP_CONFIG_FILE=/odp/platform/linux-generic/test/inline-timer.conf ${DOCKER_NAMESPACE}/travis-odp-${OS}-${ARCH} /odp/scripts/ci/check_inline_timer.sh - stage: test env: TEST=packet_align install: - true compiler: gcc script: - if [ -z "${DOCKER_NAMESPACE}" ] ; then export DOCKER_NAMESPACE="opendataplane"; fi - docker run --privileged -i -t -v `pwd`:/odp --shm-size 8g -e CC="${CC}" -e CONF="" -e ODP_CONFIG_FILE=/odp/platform/linux-generic/test/packet_align.conf ${DOCKER_NAMESPACE}/travis-odp-${OS}-${ARCH} /odp/scripts/ci/check_pktio.sh - stage: test env: TEST=dpdk-18.11 install: - true compiler: gcc script: - if [ -z "${DOCKER_NAMESPACE}" ] ; then export DOCKER_NAMESPACE="opendataplane"; fi - docker run --privileged -i -t -v `pwd`:/odp --shm-size 8g -e CC="${CC}" -e CONF="" ${DOCKER_NAMESPACE}/travis-odp-${OS}-${ARCH}-dpdk_18.11 /odp/scripts/ci/check.sh - stage: test env: TEST=distcheck compiler: gcc script: - if [ -z "${DOCKER_NAMESPACE}" ] ; then export DOCKER_NAMESPACE="opendataplane"; fi - docker run --privileged -i -t -v `pwd`:/odp --shm-size 8g -e CC="${CC}" -e CONF="--enable-user-guides" ${DOCKER_NAMESPACE}/travis-odp-${OS}-${ARCH} /odp/scripts/ci/distcheck.sh - stage: test env: TEST=distcheck_nonabi compiler: gcc script: - if [ -z "${DOCKER_NAMESPACE}" ] ; then export DOCKER_NAMESPACE="opendataplane"; fi - docker run --privileged -i -t -v `pwd`:/odp --shm-size 8g -e CC="${CC}" -e CONF="--enable-user-guides --disable-abi-compat" ${DOCKER_NAMESPACE}/travis-odp-${OS}-${ARCH} /odp/scripts/ci/distcheck.sh - stage: test env: TEST=out_of_tree compiler: gcc script: - if [ -z "${DOCKER_NAMESPACE}" ] ; then export DOCKER_NAMESPACE="opendataplane"; fi - docker run --privileged -i -t -v `pwd`:/odp --shm-size 8g -e CC="${CC}" -e CONF="" ${DOCKER_NAMESPACE}/travis-odp-${OS}-${ARCH} /odp/scripts/ci/out_of_tree.sh - stage: test env: TEST=gcc-10 compiler: gcc-10 script: - if [ -z "${DOCKER_NAMESPACE}" ] ; then export DOCKER_NAMESPACE="opendataplane"; fi - docker run -i -t -v `pwd`:/odp --shm-size 8g -e CC="${CC}" ${DOCKER_NAMESPACE}/travis-odp-ubuntu_20.04-${ARCH} /odp/scripts/ci/build_${ARCH}.sh - stage: test env: TEST=gcc-10_lto compiler: gcc-10 script: - if [ -z "${DOCKER_NAMESPACE}" ] ; then export DOCKER_NAMESPACE="opendataplane"; fi - docker run -i -t -v `pwd`:/odp --shm-size 8g -e CC="${CC}" -e CXX=g++-10 -e CONF="--enable-lto" ${DOCKER_NAMESPACE}/travis-odp-ubuntu_20.04-${ARCH} /odp/scripts/ci/build_${ARCH}.sh - stage: "build only" env: TEST=documentation compiler: gcc addons: apt: packages: - asciidoctor - libconfig-dev - libssl-dev - mscgen - cmake - graphviz install: # Updated Doxygen - | if [ ! -f "$HOME/doxygen-install/bin/doxygen" ]; then wget https://github.com/doxygen/doxygen/archive/Release_1_8_13.tar.gz tar xpvf Release_1_8_13.tar.gz pushd doxygen-Release_1_8_13 cmake -DCMAKE_INSTALL_PREFIX=$HOME/doxygen-install . make -j $(nproc) make install popd fi - export PATH=$HOME/doxygen-install/bin:$PATH - gem install asciidoctor script: - ./bootstrap - ./configure --enable-user-guides - pushd doc - make - popd # Doxygen does not trap on warnings, check for them here. - make doxygen-doc 2>&1 |tee doxygen.log - | fgrep -rq warning ./doxygen.log if [ $? -eq 0 ]; then false else true fi before_deploy: - pushd doc - mkdir gh-pages # Prevent Shippable run on gh-pages branch - printf "branches:\n except:\n - gh-pages\n" >> gh-pages/.shippable.yml - cp -r application-api-guide/output/html/* gh-pages/ - cp -r platform-api-guide/output/html/ gh-pages/platform-api-guide - cp -r helper-guide/output/html/ gh-pages/helper-guide - mkdir gh-pages/implementers-guide - cp implementers-guide/implementers-guide.html gh-pages/implementers-guide/index.html - mkdir gh-pages/users-guide - cp users-guide/users-guide.html gh-pages/users-guide/index.html - mkdir gh-pages/process-guide - cp process-guide/*.html gh-pages/process-guide/ - popd deploy: provider: pages skip_cleanup: true local_dir: doc/gh-pages github_token: $GH_REPO_TOKEN on: branch: master condition: "x$GH_REPO_TOKEN != x" - stage: "build only" env: ARCH=x86_64 install: - true script: - if [ -z "${DOCKER_NAMESPACE}" ] ; then export DOCKER_NAMESPACE="opendataplane"; fi - docker run -i -t -v `pwd`:/odp --shm-size 8g -e CC="${CC}" ${DOCKER_NAMESPACE}/travis-odp-${OS}-${ARCH} /odp/scripts/ci/build_${ARCH}.sh - stage: "build only" env: ARCH=x86_64 compiler: clang install: - true script: - if [ -z "${DOCKER_NAMESPACE}" ] ; then export DOCKER_NAMESPACE="opendataplane"; fi - docker run -i -t -v `pwd`:/odp --shm-size 8g -e CC="${CC}" ${DOCKER_NAMESPACE}/travis-odp-${OS}-${ARCH} /odp/scripts/ci/build_${ARCH}.sh - stage: "build only" env: ARCH=arm64 install: - true script: - if [ -z "${DOCKER_NAMESPACE}" ] ; then export DOCKER_NAMESPACE="opendataplane"; fi - docker run -i -t -v `pwd`:/odp -e CC="${CC}" ${DOCKER_NAMESPACE}/travis-odp-${OS}-${ARCH} /odp/scripts/ci/build_${ARCH}.sh - stage: "build only" env: ARCH=i386 install: - true script: - if [ -z "${DOCKER_NAMESPACE}" ] ; then export DOCKER_NAMESPACE="opendataplane"; fi - docker run -i -t -v `pwd`:/odp --shm-size 8g -e CC="${CC}" ${DOCKER_NAMESPACE}/travis-odp-${OS}-${ARCH} /odp/scripts/ci/build_${ARCH}.sh - stage: test env: TEST=checkpatch compiler: gcc install: - sudo apt-get update - sudo apt-get -y install codespell script: - echo ${TRAVIS_COMMIT_RANGE}; - ODP_PATCHES=`echo ${TRAVIS_COMMIT_RANGE} | sed 's/\.//'`; - ./scripts/ci-checkpatches.sh ${ODP_PATCHES}; after_failure: - cat config.log - find . -name "*.trs" | xargs grep -l '^.test-result. FAIL' | while read trs ; do echo FAILURE detected at $trs; cat ${trs%%.trs}.log ; done