# 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 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=dd336aa3-9683-4a62-9a50-12367fab851e - OS=ubuntu_18.04 - ARCH=x86_64 - CHECK=1 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=ppc64el - CHECK=0 ARCH=i386 - CHECK=0 ARCH=arm64 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="--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: - sudo sysctl vm.nr_hugepages=1000 script: - if [ -z "${DOCKER_NAMESPACE}" ] ; then export DOCKER_NAMESPACE="opendataplane"; fi - if [ ${CHECK} -eq 0 ] ; then 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/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" - compiler: clang env: CHECK=0 ARCH=ppc64el - compiler: clang env: CHECK=0 ARCH=ppc64el CONF="--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=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 canfail: yes 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 canfail: yes 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 --privileged -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 --privileged -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: test env: TEST=linux_generic_build install: - true 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="--with-platform=linux-generic" -e ODP_LIB_NAME="libodp-linux" ${DOCKER_NAMESPACE}/travis-odp-${OS}-${ARCH} /odp/scripts/ci/build_${ARCH}.sh - stage: "build only" env: TEST=documentation 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}" ${DOCKER_NAMESPACE}/travis-odp-${OS}-${ARCH} /odp/scripts/ci/doxygen.sh - stage: "build only" env: ARCH=x86_64 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}" ${DOCKER_NAMESPACE}/travis-odp-${OS}-${ARCH} /odp/scripts/ci/build_${ARCH}.sh - stage: "build only" env: ARCH=x86_64 compiler: clang 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}" ${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 --privileged -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 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}" ${DOCKER_NAMESPACE}/travis-odp-${OS}-${ARCH} /odp/scripts/ci/build_${ARCH}.sh - stage: test env: TEST=checkpatch canfail: yes 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}; allow_failures: - canfail: yes 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