.gitlab-ci.yml 12.7 KiB
Newer Older
Alberto Miranda's avatar
Alberto Miranda committed
# This file is a template, and might need editing before it works on your project.
# use the official gcc image, based on debian
# can use verions as well, like gcc:5.2
# see https://hub.docker.com/_/gcc/

Alberto Miranda's avatar
Alberto Miranda committed
variables:
  GIT_SUBMODULE_STRATEGY: normal

Alberto Miranda's avatar
Alberto Miranda committed
stages:
    - build
    - test
Alberto Miranda's avatar
Alberto Miranda committed
    - deploy
Alberto Miranda's avatar
Alberto Miranda committed
# Install dependencies for GCC builds
before_script:
    - apt-get update &&
      apt-get install -y
        libboost-system-dev
        libboost-filesystem-dev
        libboost-program-options-dev
        libboost-thread-dev
        libboost-regex-dev
        libprotobuf-dev
        protobuf-compiler
        libprotobuf-c0-dev
        protobuf-c-compiler
        libyaml-cpp-dev
        libyaml-dev
        libarchive-dev
Alberto Miranda's avatar
Alberto Miranda committed
        cmake

    - pushd . &&
      git clone https://github.com/ofiwg/libfabric.git &&
      cd libfabric &&
      ./autogen.sh &&
      mkdir build &&
      cd build &&
      ../configure &&
      make -j $(nproc) &&
      make install &&
      popd
Alberto Miranda's avatar
Alberto Miranda committed
    - pushd . &&
      git clone https://github.com/mercury-hpc/mercury.git &&
Alberto Miranda's avatar
Alberto Miranda committed
      cd mercury &&
      mkdir build &&
      cd build &&
      cmake
        -DCMAKE_BUILD_TYPE:STRING=Debug
        -DBUILD_TESTING:BOOL=OFF
        -DMERCURY_USE_SM_ROUTING:BOOL=OFF
        -DMERCURY_USE_SELF_FORWARD:BOOL=OFF
Alberto Miranda's avatar
Alberto Miranda committed
        -DMERCURY_USE_CHECKSUMS:BOOL=OFF
Alberto Miranda's avatar
Alberto Miranda committed
        -DMERCURY_USE_BOOST_PP:BOOL=ON
        -DMERCURY_USE_EAGER_BULK:BOOL=ON
        -DBUILD_SHARED_LIBS:BOOL=ON
        -DNA_USE_OFI:BOOL=ON
        .. &&
Alberto Miranda's avatar
Alberto Miranda committed
      make -j $(nproc) &&
      make install &&
      popd
Alberto Miranda's avatar
Alberto Miranda committed

### GCC 5
build:gcc:5:
  image: gcc:5
  stage: build

  script:
        - ./bootstrap.sh
        - mkdir build && cd build
        - ../configure 
            --enable-tests 
Alberto Miranda's avatar
Alberto Miranda committed
        - make -j$(nproc) CPPFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0"
Alberto Miranda's avatar
Alberto Miranda committed
        - cd tests
Alberto Miranda's avatar
Alberto Miranda committed
        - make -j$(nproc) CPPFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0" core
        - make -j$(nproc) CPPFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0" api
Alberto Miranda's avatar
Alberto Miranda committed


### GCC 6
build:gcc:6:
  image: gcc:6
  stage: build

  script:
        - ./bootstrap.sh
        - mkdir build && cd build
        - ../configure 
            --enable-tests 
Alberto Miranda's avatar
Alberto Miranda committed
        - make -j$(nproc) CPPFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0"
Alberto Miranda's avatar
Alberto Miranda committed
        - cd tests
Alberto Miranda's avatar
Alberto Miranda committed
        - make -j$(nproc) CPPFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0" core
        - make -j$(nproc) CPPFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0" api
Alberto Miranda's avatar
Alberto Miranda committed


### GCC 7
build:gcc:7:
  image: gcc:7
  stage: build

  script:
        - ./bootstrap.sh
        - mkdir build && cd build
        - ../configure 
            --enable-tests 
Alberto Miranda's avatar
Alberto Miranda committed
        - make -j$(nproc)
Alberto Miranda's avatar
Alberto Miranda committed
        - cd tests
Alberto Miranda's avatar
Alberto Miranda committed
        - make -j$(nproc)
        - make -j$(nproc)
Alberto Miranda's avatar
Alberto Miranda committed


### GCC 8
build:gcc:8:
  image: gcc:8
  stage: build

  script:
        - ./bootstrap.sh
        - mkdir build && cd build
        - ../configure 
            --enable-tests 
Alberto Miranda's avatar
Alberto Miranda committed
        - make -j$(nproc)
Alberto Miranda's avatar
Alberto Miranda committed
        - cd tests
Alberto Miranda's avatar
Alberto Miranda committed
        - make -j$(nproc)
        - make -j$(nproc)
Alberto Miranda's avatar
Alberto Miranda committed


################################################################################
# test scripts
################################################################################
Alberto Miranda's avatar
Alberto Miranda committed
test:coverage:
Alberto Miranda's avatar
Alberto Miranda committed
    image: ubuntu:latest
Alberto Miranda's avatar
Alberto Miranda committed
    stage: test
Alberto Miranda's avatar
Alberto Miranda committed

    # Install dependencies
Alberto Miranda's avatar
Alberto Miranda committed
    before_script:
Alberto Miranda's avatar
Alberto Miranda committed
        - apt-get update &&
          apt-get upgrade -y &&
Alberto Miranda's avatar
Alberto Miranda committed
          apt-get install -y
Alberto Miranda's avatar
Alberto Miranda committed
            git
Alberto Miranda's avatar
Alberto Miranda committed
            build-essential
            autotools-dev
            automake
            autoconf
            libtool
Alberto Miranda's avatar
Alberto Miranda committed
            pkg-config
Alberto Miranda's avatar
Alberto Miranda committed
            libboost-system-dev
            libboost-filesystem-dev
            libboost-program-options-dev
            libboost-thread-dev
Alberto Miranda's avatar
Alberto Miranda committed
            libboost-regex-dev
Alberto Miranda's avatar
Alberto Miranda committed
            libprotobuf-dev
Alberto Miranda's avatar
Alberto Miranda committed
            protobuf-compiler
Alberto Miranda's avatar
Alberto Miranda committed
            libprotobuf-c-dev
            protobuf-c-compiler
Alberto Miranda's avatar
Alberto Miranda committed
            libyaml-cpp-dev
            libyaml-dev
            libarchive-dev
Alberto Miranda's avatar
Alberto Miranda committed
            valgrind
Alberto Miranda's avatar
Alberto Miranda committed
            cmake
Alberto Miranda's avatar
Alberto Miranda committed
            lcov
Alberto Miranda's avatar
Alberto Miranda committed

        - pushd . &&
          git clone https://github.com/ofiwg/libfabric.git &&
          cd libfabric &&
          ./autogen.sh &&
          mkdir build &&
          cd build &&
          ../configure &&
          make -j $(nproc) &&
          make install &&
Alberto Miranda's avatar
Alberto Miranda committed
          popd &&
          ldconfig
Alberto Miranda's avatar
Alberto Miranda committed

        - pushd . &&
          git clone https://github.com/mercury-hpc/mercury.git &&
          cd mercury &&
          mkdir build &&
          cd build &&
          cmake
            -DCMAKE_BUILD_TYPE:STRING=Debug
            -DBUILD_TESTING:BOOL=OFF
            -DMERCURY_USE_SM_ROUTING:BOOL=OFF
            -DMERCURY_USE_SELF_FORWARD:BOOL=OFF
            -DMERCURY_USE_CHECKSUMS:BOOL=OFF
            -DMERCURY_USE_BOOST_PP:BOOL=ON
            -DMERCURY_USE_EAGER_BULK:BOOL=ON
            -DBUILD_SHARED_LIBS:BOOL=ON
            -DNA_USE_OFI:BOOL=ON
            .. &&
          make -j $(nproc) &&
          make install &&
Alberto Miranda's avatar
Alberto Miranda committed
          popd &&
          ldconfig
Alberto Miranda's avatar
Alberto Miranda committed
    # Build and test
Alberto Miranda's avatar
Alberto Miranda committed
    script:
Alberto Miranda's avatar
Alberto Miranda committed
        - ./bootstrap.sh
Alberto Miranda's avatar
Alberto Miranda committed
        - mkdir build && cd build
Alberto Miranda's avatar
Alberto Miranda committed
        - ../configure 
            --enable-tests 
Alberto Miranda's avatar
Alberto Miranda committed
            CFLAGS="-O0 --coverage"
            CXXFLAGS="-O0 --coverage"
            LDFLAGS="--coverage"
Alberto Miranda's avatar
Alberto Miranda committed
        - make -j$(nproc)
Alberto Miranda's avatar
Alberto Miranda committed
        - cd tests
Alberto Miranda's avatar
Alberto Miranda committed
        - make -j$(nproc) core
Alberto Miranda's avatar
Alberto Miranda committed
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./core -as
Alberto Miranda's avatar
Alberto Miranda committed
        - make -j$(nproc) api
Alberto Miranda's avatar
Alberto Miranda committed
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::NORNS_TASK]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_error]"
Alberto Miranda's avatar
Alberto Miranda committed
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_iotask_init]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_resource_init]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_copy_buffer_to_file]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_copy_local_posix_files]"
Alberto Miranda's avatar
Alberto Miranda committed
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_pull_errors]"          
Alberto Miranda's avatar
Alberto Miranda committed
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_pull_links]"           
Alberto Miranda's avatar
Alberto Miranda committed
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_pull_to_posix_file]"   
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_pull_to_posix_subdir]" 
Alberto Miranda's avatar
Alberto Miranda committed
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_push_errors]"          
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_push_links]"           
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_push_memory_to_posix_file]"   
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_push_memory_to_posix_file_errors]"   
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_push_to_posix_file]"   
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_push_to_posix_subdir]" 
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_remove_local_posix_files]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_add_process]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_register_job]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_register_namespace]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_remove_process]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_send_command]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_status]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_unregister_job]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_unregister_namespace]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_update_job]"
Alberto Miranda's avatar
Alberto Miranda committed
    after_script:
Alberto Miranda's avatar
Alberto Miranda committed
        - (cd build && ../gencov.sh)
Alberto Miranda's avatar
Alberto Miranda committed
        - genhtml -o build/html/coverage build/norns.info
Alberto Miranda's avatar
Alberto Miranda committed
        - if [[ -e build/tests.log ]]; 
Alberto Miranda's avatar
Alberto Miranda committed
          then
Alberto Miranda's avatar
Alberto Miranda committed
              cat $(tail -1 build/tests.log)/config/urd.log;
Alberto Miranda's avatar
Alberto Miranda committed
          fi
Alberto Miranda's avatar
Alberto Miranda committed

    artifacts:
      paths:
        - build/html/coverage/

Alberto Miranda's avatar
Alberto Miranda committed
test:optimized:
    image: ubuntu:latest
    stage: test

    # Install dependencies
    before_script:
        - apt-get update &&
          apt-get upgrade -y &&
          apt-get install -y
            git
            build-essential
            autotools-dev
            automake
            autoconf
            libtool
            pkg-config
            libboost-system-dev
            libboost-filesystem-dev
            libboost-program-options-dev
            libboost-thread-dev
            libboost-regex-dev
            libprotobuf-dev
            protobuf-compiler
            libprotobuf-c-dev
            protobuf-c-compiler
            libyaml-cpp-dev
            libyaml-dev
            libarchive-dev
Alberto Miranda's avatar
Alberto Miranda committed
            libcap2-bin
            valgrind
            cmake

        - pushd . &&
          git clone https://github.com/ofiwg/libfabric.git &&
          cd libfabric &&
          ./autogen.sh &&
          mkdir build &&
          cd build &&
          ../configure &&
          make -j $(nproc) &&
          make install &&
          popd &&
          ldconfig

        - pushd . &&
          git clone https://github.com/mercury-hpc/mercury.git &&
          cd mercury &&
          mkdir build &&
          cd build &&
          cmake
            -DCMAKE_BUILD_TYPE:STRING=Debug
            -DBUILD_TESTING:BOOL=OFF
            -DMERCURY_USE_SM_ROUTING:BOOL=OFF
            -DMERCURY_USE_SELF_FORWARD:BOOL=OFF
            -DMERCURY_USE_CHECKSUMS:BOOL=OFF
            -DMERCURY_USE_BOOST_PP:BOOL=ON
            -DMERCURY_USE_EAGER_BULK:BOOL=ON
            -DBUILD_SHARED_LIBS:BOOL=ON
            -DNA_USE_OFI:BOOL=ON
            .. &&
          make -j $(nproc) &&
          make install &&
          popd &&
          ldconfig
          
    # Build and test
    script:
        - ./bootstrap.sh
        - mkdir build && cd build
        - ../configure 
            --enable-tests 
        - make -j$(nproc)
        - cd tests
        - make -j$(nproc) core
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./core -as
        - make -j$(nproc) api
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::NORNS_TASK]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_error]"
Alberto Miranda's avatar
Alberto Miranda committed
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_iotask_init]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_resource_init]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_copy_buffer_to_file]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_copy_local_posix_files]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_pull_errors]"          
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_pull_links]"           
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_pull_to_posix_file]"   
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_pull_to_posix_subdir]" 
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_push_errors]"          
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_push_links]"           
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_push_memory_to_posix_file]"   
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_push_memory_to_posix_file_errors]"   
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_push_to_posix_file]"   
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_push_to_posix_subdir]" 
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_remove_local_posix_files]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_add_process]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_register_job]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_register_namespace]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_remove_process]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_send_command]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_status]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_unregister_job]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_unregister_namespace]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_update_job]"

    after_script:
        - if [[ -e build/tests.log ]]; 
          then
              cat $(tail -1 build/tests.log)/config/urd.log;
          fi

Alberto Miranda's avatar
Alberto Miranda committed
pages:
Alberto Miranda's avatar
Alberto Miranda committed
  image: alpine:latest
Alberto Miranda's avatar
Alberto Miranda committed
  stage: deploy
Alberto Miranda's avatar
Alberto Miranda committed
  before_script:
    - ''
Alberto Miranda's avatar
Alberto Miranda committed
  dependencies: 
Alberto Miranda's avatar
Alberto Miranda committed
    - test:coverage
Alberto Miranda's avatar
Alberto Miranda committed
  script:
Alberto Miranda's avatar
Alberto Miranda committed
    - mv build/html/coverage/ public/
Alberto Miranda's avatar
Alberto Miranda committed
  artifacts:
    paths:
      - public
    expire_in: 30 days
  only:
    - master