https://github.com/kit-parco/networkit
Raw File
Tip revision: 4c6dcc4367b51005a34221242048609c357ffbd6 authored by Fabian Brandt-Tumescheit on 08 September 2020, 15:13:55 UTC
Bump version 7.1
Tip revision: 4c6dcc4
.travis.yml
language: generic

git:
  depth: 1

env:
  global:
    - export OMP_NUM_THREADS=2
    - export CXX_STANDARD=11
    - export MONOLITH=ON

stages:
  - "Core tests"
  - "Additional tests"

jobs:
  include:
    - name: macOS 10.15, Apple Clang
      env:
        - CC=cc
        - CXX=c++
      os: osx
      osx_image: xcode12
      stage: "Core tests"
      addons:
        homebrew:
          packages:
            - libomp
          update: false

    - name: macOS 10.15, Apple Clang, non-monolithic
      env:
        - CC=cc
        - CXX=c++
        - MONOLITH=off
      os: osx
      osx_image: xcode12
      stage: "Additional tests"
      addons:
        homebrew:
          packages:
            - libomp
          update: true
      script: &script_cpp_only
        - $CXX --version
        - mkdir debug_test && cd "$_"
        - cmake -DNETWORKIT_BUILD_TESTS=ON -DNETWORKIT_MONOLITH=$MONOLITH -DNETWORKIT_CXX_STANDARD=$CXX_STANDARD -DNETWORKIT_WARNINGS=ON -DCMAKE_BUILD_TYPE=Debug ..
        - make -j2
        - ctest -V

    - name: macOS 10.15, llvm 10
      env:
        - CC=/usr/local/opt/llvm@10/bin/clang
        - CXX=/usr/local/opt/llvm@10/bin/clang++
      os: osx
      osx_image: xcode12
      stage: "Additional tests"
      addons:
        homebrew:
          packages:
            - llvm
            - libomp
          update: true

    - name: macOS 10.15, GCC 10
      env:
        - CC=/usr/local/opt/gcc@10/bin/gcc-10
        - CXX=/usr/local/opt/gcc@10/bin/g++-10
      os: osx
      osx_image: xcode12
      stage: "Additional tests"
      addons:
        homebrew:
          packages:
            - gcc@10
          update: true
      before_install:
        - brew link gcc

    - name: macOS 10.14, Apple Clang
      env:
        - CC=cc
        - CXX=c++
      os: osx
      osx_image: xcode11.3
      stage: "Core tests"
      addons:
        homebrew:
          packages:
            - libomp
          update: false

    - name: macOS 10.14, llvm 10
      env:
        - CC=/usr/local/opt/llvm@10/bin/clang
        - CXX=/usr/local/opt/llvm@10/bin/clang++
      os: osx
      osx_image: xcode11.3
      stage: "Additional tests"
      addons:
        homebrew:
          packages:
            - llvm
            - libomp
          update: true

    - name: macOS 10.14, GCC 10
      env:
        - CC=/usr/local/opt/gcc@10/bin/gcc-10
        - CXX=/usr/local/opt/gcc@10/bin/g++-10
      os: osx
      osx_image: xcode11.3
      stage: "Additional tests"
      addons:
        homebrew:
          packages:
            - gcc@10
          update: true
      before_install:
        - brew link gcc

    - name: Linux, Clang 9 with clang-tidy
      env:
        - CC=clang
        - CXX=clang++
      os: linux
      stage: "Core tests"
      dist: bionic
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
            - sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main'
              key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
            - sourceline: 'deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main'
              key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
          packages:
            - libiomp-dev
            - clang-9
            - clang-tidy-9
      script:
        - sudo rm -rf /usr/local/clang-*
        - sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-9 9999
        - sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-9 9999
        - sudo update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-9 9999
        - $CXX --version
        - clang-tidy --version
        - mkdir debug_test && cd "$_"
        - cmake -DNETWORKIT_BUILD_TESTS=ON -DNETWORKIT_CLANG_TIDY=ON -DCMAKE_BUILD_TYPE=Debug ..
        - make -j2
        - ctest -V

    # Test with sanitizers.
    - name: "Linux, GCC 5: Core build, sanitizers, coverage"
      compiler: gcc
      os: linux
      stage: "Core tests"
      dist: xenial
      addons: &gcc5
        apt:
          packages:
            - python3-pip
            - python3.5-venv
      script:
        - python3 -m venv pyenv && . pyenv/bin/activate
        - pip3 install --upgrade pip
        - pip3 install setuptools cpp-coveralls
        - mkdir build && cd "$_"
        - cmake -DNETWORKIT_BUILD_TESTS=ON -DCMAKE_BUILD_TYPE=Debug -DNETWORKIT_WITH_SANITIZERS=leak -DNETWORKIT_COVERAGE=ON ..
        - make -j2
        - ctest -V
      after_success:
        - cd ..
        - coveralls -E ".*test/.*" -E ".*CMakeFiles.*" --exclude extlibs --exclude pyenv --exclude scripts --root .

    - name: Linux, GCC 10
      env:
        - CC=gcc-10
        - CXX=g++-10
      os: linux
      stage: "Additional tests"
      dist: bionic
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-10
            - python3-pip
            - python3-venv

    - name: Linux, GCC 4.9
      env:
        - CC=gcc-4.9
        - CXX=g++-4.9
      os: linux
      stage: "Core tests"
      dist: xenial
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - cmake
            - g++-4.9
            - python3-pip
            - python3.5-venv

    - name: Linux, Clang 3.8
      env:
        - CC=clang-3.8
        - CXX=clang++-3.8
      os: linux
      stage: "Core tests"
      dist: xenial
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-5
            - clang-3.8
            - libiomp-dev
            - python3-pip
            - python3.5-venv

    # Test more exotic builds only on Linux.
    - name: "Linux, GCC 10: Core build, debugging"
      env:
        - CC=gcc-10
        - CXX=g++-10
      os: linux
      stage: "Additional tests"
      dist: bionic
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-10
      script: *script_cpp_only

    - name: "Linux, GCC 10: Core build, non-monolithic"
      env:
        - CC=gcc-10
        - CXX=g++-10
        - MONOLITH=OFF
      os: linux
      stage: "Additional tests"
      dist: bionic
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-10
      script: *script_cpp_only

    # Finally, test conformance to newer versions of the C++ standard.
    - name: "Linux, GCC 10: C++14 conformance"
      env:
        - CC=gcc-10
        - CXX=g++-10
        - CXX_STANDARD=14
      os: linux
      stage: "Additional tests"
      dist: bionic
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-10
      script: *script_cpp_only

    - name: "Linux, GCC 10: C++17 conformance"
      env:
        - CC=gcc-10
        - CXX=g++-10
        - CXX_STANDARD=17
      os: linux
      stage: "Additional tests"
      dist: bionic
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-10
      script: *script_cpp_only

    - name: "Linux, GCC 10: C++20 conformance"
      env:
        - CC=gcc-10
        - CXX=g++-10
        - CXX_STANDARD=20
      os: linux
      stage: "Additional tests"
      dist: bionic
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-10
      script: *script_cpp_only

    - name: Documentation only
      env:
        - CC=gcc-10
        - CXX=g++-10
      os: linux
      stage: "Core tests"
      dist: bionic
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-10
            - python3-pip
            - python3-venv
            - doxygen
      script:
        - set -e
        - python3 -m venv pyenv && . pyenv/bin/activate
        - pip3 install --upgrade pip
        # cython is required because git does not contain _NetworKit.
        - pip3 install cython
        # sphinx_bootstrap_theme is required to build the documentation.
        - pip3 install sphinx sphinx_bootstrap_theme
        # Build the C++ core library (no need for optimizations).
        - mkdir core_build && cd "$_"
        - cmake -DCMAKE_BUILD_TYPE=Debug -DNETWORKIT_CXX_STANDARD=$CXX_STANDARD -DNETWORKIT_WARNINGS=ON ..
        - make -j2
        - cd ..
        # Build the Python extension.
        - export CMAKE_LIBRARY_PATH=${CMAKE_LIBRARY_PATH:+$CMAKE_LIBRARY_PATH:}$(pwd)/core_build
        - export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$(pwd)/core_build
        - NETWORKIT_PARALLEL_JOBS=2 python3 ./setup.py build_ext --inplace --networkit-external-core
        - NETWORKIT_PARALLEL_JOBS=2 pip3 install -e .
        # Build the documentation.
        - cd core_build
        - make docs
        - touch htmldocs/.nojekyll
        - rm -rf htmldocs/{.buildinfo,.doctrees}
      deploy:
        provider: pages
        skip-cleanup: true
        token: $SECRET_DEPLOY_GITHUB_PAGES
        local_dir: core_build/htmldocs
        repo: networkit/dev-docs
        target_branch: master
        on:
          branch: master

    - name: "Style guide compliance"
      os: linux
      stage: "Core tests"
      dist: bionic
      addons:
        apt:
          sources: ['llvm-toolchain-bionic-8']
          packages: ['clang-format-8']
      script:
        - set -e
        - ./check_code.sh -v

script:
 - $CXX --version
 - python3 --version
 - cmake --version

 - python3 -m venv pyenv && . pyenv/bin/activate
 - pip3 install --upgrade pip
 # cython is required because git does not contain _NetworKit.
 # ipython is required for tests.
 - pip3 install cython ipython jupyter

 # First, build the C++ core library and run C++ tests.
 - mkdir core_build && cd "$_"
 - cmake -DNETWORKIT_BUILD_TESTS=ON -DCMAKE_BUILD_TYPE=Release -DNETWORKIT_CXX_STANDARD=$CXX_STANDARD -DNETWORKIT_WARNINGS=ON -DNETWORKIT_WARNINGS_AS_ERRORS=ON ..
 - make -j2
 - UBSAN_OPTIONS=print_stacktrace=1:halt_on_error=1 ASAN_OPTIONS=abort_on_error=1 ctest -V
 - cd ..

 # Finally, build the Python extension and run Python tests.
 - export CMAKE_LIBRARY_PATH=${CMAKE_LIBRARY_PATH:+$CMAKE_LIBRARY_PATH:}$(pwd)/core_build
 - export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$(pwd)/core_build
 - NETWORKIT_PARALLEL_JOBS=2 python3 ./setup.py build_ext --inplace --networkit-external-core
 - NETWORKIT_PARALLEL_JOBS=2 pip3 install -e .
 # Check that NetworKit can be successfuly imported without dependencies.
 - python3 -c "import networkit"
 # Install dependencies before running the tests.
 - pip3 install -r requirements.txt
 - python3 -m unittest discover -v networkit/test/

 # Test Jupyter-notebooks
 - python3 notebooks/test_notebooks.py 'notebooks/'

notifications:
  email: false
back to top