.gitlab-ci.yml 14.6 KiB
Newer Older
Alberto Miranda's avatar
Alberto Miranda committed
variables:
  GIT_SUBMODULE_STRATEGY: normal

Alberto Miranda's avatar
Alberto Miranda committed
stages:
    - build
Alberto Miranda's avatar
Alberto Miranda committed
    - deploy

################################################################################
# Build jobs
################################################################################
################################################################################
#########################     GCC      #########################################
################################################################################

### GCC 4.8 with libfabric1.7.1, mercury 1.0.1
build:gcc_4.8:libfabric_1.7.1:mercury_1.0.1:
  image: bscstorage/norns-build-deps:gcc4.8-libfabric1.7.1-mercury1.0.1
Alberto Miranda's avatar
Alberto Miranda committed
  stage: build
  script:
    - |
      (
        set -Eeuo pipefail
        set -x
        ./bootstrap.sh
        mkdir build && cd build
        ../configure --enable-tests 
        make -j$(nproc)
        make -j$(nproc) core
        make -j$(nproc) api
        make -j$(nproc) api_interactive
  only:
    - tags
    - triggers
    - schedules
  artifacts:
    paths:
      - build

### GCC 4.9 with libfabric1.7.1, mercury 1.0.1
build:gcc:4.9:
  image: bscstorage/norns-build-deps:gcc4.9-libfabric1.7.1-mercury1.0.1
  stage: build
  script:
    - |
      (
        set -Eeuo pipefail
        set -x
        ./bootstrap.sh
        mkdir build && cd build
        ../configure --enable-tests 
        make -j$(nproc)
        cd tests
        make -j$(nproc) core
        make -j$(nproc) api
        make -j$(nproc) api_interactive
      )
  only:
    - tags
    - triggers
    - schedules


### GCC 5.4 with libfabric1.7.1, mercury 1.0.1
build:gcc_5.4:libfabric_1.7.1:mercury_1.0.1:
  image: bscstorage/norns-build-deps:gcc5.4-libfabric1.7.1-mercury1.0.1
  stage: build
  script:
    - |
      (
        set -Eeuo pipefail
        set -x
        ./bootstrap.sh
        mkdir build && cd build
        ../configure --enable-tests 
        make -j$(nproc)
        cd tests
        make -j$(nproc) core
        make -j$(nproc) api
        make -j$(nproc) api_interactive
      )
  only:
    - tags
    - triggers
    - schedules


### GCC 6.5 with libfabric1.7.1, mercury 1.0.1
build:gcc_6.5:libfabric_1.7.1:mercury_1.0.1:
  image: bscstorage/norns-build-deps:gcc6.5-libfabric1.7.1-mercury1.0.1
  stage: build
  script:
    - |
      (
        set -Eeuo pipefail
        set -x
        ./bootstrap.sh
        mkdir build && cd build
        ../configure --enable-tests 
        make -j$(nproc)
        cd tests
        make -j$(nproc) core
        make -j$(nproc) api
        make -j$(nproc) api_interactive
      )
  only:
    - tags
    - triggers
    - schedules


### GCC 7.4 with libfabric1.7.1, mercury 1.0.1
build:gcc_7.4:libfabric_1.7.1:mercury_1.0.1:
  image: bscstorage/norns-build-deps:gcc7.4-libfabric1.7.1-mercury1.0.1
  stage: build
  script:
    - |
      (
        set -Eeuo pipefail
        set -x
        ./bootstrap.sh
        mkdir build && cd build
        ../configure --enable-tests 
        make -j$(nproc)
        cd tests
        make -j$(nproc) core
        make -j$(nproc) api
        make -j$(nproc) api_interactive
      )
  only:
    - tags
    - triggers
    - schedules


### GCC 8.1 with libfabric1.7.1, mercury 1.0.1
build:gcc_8.1:libfabric_1.7.1:mercury_1.0.1:
  image: bscstorage/norns-build-deps:gcc8.1-libfabric1.7.1-mercury1.0.1
  stage: build
  script:
    - |
      (
        set -Eeuo pipefail
        set -x
        ./bootstrap.sh
        mkdir build && cd build
        ../configure --enable-tests 
        make -j$(nproc)
        cd tests
        make -j$(nproc) core
        make -j$(nproc) api
        make -j$(nproc) api_interactive
      )
  only:
    - tags
    - triggers
    - schedules


### GCC 9.1 with libfabric1.7.1, mercury 1.0.1
build:gcc_9.1:libfabric_1.7.1:mercury_1.0.1:
  image: bscstorage/norns-build-deps:gcc9.1-libfabric1.7.1-mercury1.0.1
  stage: build
  script:
    - |
      (
        set -Eeuo pipefail
        set -x
        ./bootstrap.sh
        mkdir build && cd build
        ../configure --enable-tests 
        make -j$(nproc)
        cd tests
        make -j$(nproc) core
        make -j$(nproc) api
        make -j$(nproc) api_interactive
      )
    - find "${CI_PROJECT_DIR}/build" \( -name "*.o" -or -name "*.lo" \) -delete
    - du -h "${CI_PROJECT_DIR}/build"
      - "${CI_PROJECT_DIR}/build"
Alberto Miranda's avatar
Alberto Miranda committed
# This one should always run       
#    - tags
#    - triggers
################################################################################
#########################  LLVM/Clang  #########################################
################################################################################

### Clang 3.6 with libfabric1.7.1, mercury 1.0.1
build:clang_3.6:libfabric_1.7.1:mercury_1.0.1:
  image: bscstorage/norns-build-deps:clang3.6-libfabric1.7.1-mercury1.0.1
  stage: build
  script:
    - |
      (
        set -Eeuo pipefail
        set -x
        ./bootstrap.sh
        mkdir build && cd build
        ../configure --enable-tests 
        make -j$(nproc)
        cd tests
        make -j$(nproc) core
        make -j$(nproc) api
        make -j$(nproc) api_interactive
      )
  only:
    - tags
    - triggers
    - schedules
### Clang 3.8 with libfabric1.7.1, mercury 1.0.1
build:clang_3.8:libfabric_1.7.1:mercury_1.0.1:
  image: bscstorage/norns-build-deps:clang3.8-libfabric1.7.1-mercury1.0.1
  stage: build
  script:
    - |
      (
        set -Eeuo pipefail
        set -x
        ./bootstrap.sh
        mkdir build && cd build
        ../configure --enable-tests 
        make -j$(nproc)
        cd tests
        make -j$(nproc) core
        make -j$(nproc) api
        make -j$(nproc) api_interactive
      )
  only:
    - tags
    - triggers
    - schedules
### Clang 3.9 with libfabric1.7.1, mercury 1.0.1
build:clang_3.9:libfabric_1.7.1:mercury_1.0.1:
  image: bscstorage/norns-build-deps:clang3.9-libfabric1.7.1-mercury1.0.1
  stage: build
  script:
    - |
      (
        set -Eeuo pipefail
        set -x
        ./bootstrap.sh
        mkdir build && cd build
        ../configure --enable-tests 
        make -j$(nproc)
        cd tests
        make -j$(nproc) core
        make -j$(nproc) api
        make -j$(nproc) api_interactive
      )
  only:
    - tags
    - triggers
    - schedules
### Clang 4.0 with libfabric1.7.1, mercury 1.0.1
build:clang_4.0:libfabric_1.7.1:mercury_1.0.1:
  image: bscstorage/norns-build-deps:clang4.0-libfabric1.7.1-mercury1.0.1
  stage: build
  script:
    - |
      (
        set -Eeuo pipefail
        set -x
        ./bootstrap.sh
        mkdir build && cd build
        ../configure --enable-tests 
        make -j$(nproc)
        cd tests
        make -j$(nproc) core
        make -j$(nproc) api
        make -j$(nproc) api_interactive
      )
  only:
    - tags
    - triggers
    - schedules
### Clang 5.0 with libfabric1.7.1, mercury 1.0.1
build:clang_5.0:libfabric_1.7.1:mercury_1.0.1:
  image: bscstorage/norns-build-deps:clang5.0-libfabric1.7.1-mercury1.0.1
  stage: build
  script:
    - |
      (
        set -Eeuo pipefail
        set -x
        ./bootstrap.sh
        mkdir build && cd build
        ../configure --enable-tests 
        make -j$(nproc)
        cd tests
        make -j$(nproc) core
        make -j$(nproc) api
        make -j$(nproc) api_interactive
      )
  only:
    - tags
    - triggers
    - schedules

### Clang 6.0 with libfabric1.7.1, mercury 1.0.1
build:clang_6.0:libfabric_1.7.1:mercury_1.0.1:
  image: bscstorage/norns-build-deps:clang6.0-libfabric1.7.1-mercury1.0.1
  stage: build
  script:
    - |
      (
        set -Eeuo pipefail
        set -x
        ./bootstrap.sh
        mkdir build && cd build
        ../configure --enable-tests 
        make -j$(nproc)
        cd tests
        make -j$(nproc) core
        make -j$(nproc) api
        make -j$(nproc) api_interactive
      )
  only:
    - tags
    - triggers
    - schedules

### Clang 7.1 with libfabric1.7.1, mercury 1.0.1
build:clang_7.1:libfabric_1.7.1:mercury_1.0.1:
  image: bscstorage/norns-build-deps:clang7.1-libfabric1.7.1-mercury1.0.1
  stage: build
  script:
    - |
      (
        set -Eeuo pipefail
        set -x
        ./bootstrap.sh
        mkdir build && cd build
        ../configure --enable-tests 
        make -j$(nproc)
        cd tests
        make -j$(nproc) core
        make -j$(nproc) api
        make -j$(nproc) api_interactive
      )
  only:
    - tags
    - triggers
    - schedules

### Clang 8.0 with libfabric1.7.1, mercury 1.0.1
build:clang_8.0:libfabric_1.7.1:mercury_1.0.1:
  image: bscstorage/norns-build-deps:clang8.0-libfabric1.7.1-mercury1.0.1
  stage: build
  script:
    - |
      (
        set -Eeuo pipefail
        set -x
        ./bootstrap.sh
        mkdir build && cd build
        ../configure --enable-tests 
        make -j$(nproc)
        cd tests
        make -j$(nproc) core
        make -j$(nproc) api
        make -j$(nproc) api_interactive
      )
  only:
    - tags
    - triggers
    - schedules

### Clang 9.0 with libfabric1.7.1, mercury 1.0.1
build:clang_9.0:libfabric_1.7.1:mercury_1.0.1:
  image: bscstorage/norns-build-deps:clang9.0-libfabric1.7.1-mercury1.0.1
  stage: build
  script:
    - |
      (
        set -Eeuo pipefail
        set -x
        ./bootstrap.sh
        mkdir build && cd build
        ../configure --enable-tests 
        make -j$(nproc)
        cd tests
        make -j$(nproc) core
        make -j$(nproc) api
        make -j$(nproc) api_interactive
      )
# This one should always run       
#  only:
#    - tags
#    - triggers
#    - schedules


################################################################################
# Test jobs
################################################################################

### GCC 9.1 with libfabric1.7.1, mercury 1.0.1
test:gcc_9.1:libfabric_1.7.1:mercury_1.0.1:
  image: bscstorage/norns-build-deps:gcc9.1-libfabric1.7.1-mercury1.0.1
  stage: test
  dependencies:
    - build:gcc_9.1:libfabric_1.7.1:mercury_1.0.1
  variables: 
    NORNS_DEBUG_CONFIG_FILE_OVERRIDE: 1
  script:
    - |
      (
        set -Eeuo pipefail
        set -x
        cd build/tests
        ./core -as
        ./api -as "[api::NORNS_TASK]"
        ./api -as "[api::norns_error]"
        ./api -as "[api::norns_iotask_init]"
        ./api -as "[api::norns_resource_init]"
        ./api -as "[api::norns_submit]"
        ./api -as "[api::norns_submit_copy_buffer_to_file]"
        ./api -as "[api::norns_submit_copy_local_posix_files]"
        ./api -as "[api::norns_submit_pull_errors]"          
        ./api -as "[api::norns_submit_pull_links]"           
        ./api -as "[api::norns_submit_pull_to_posix_file]"   
        ./api -as "[api::norns_submit_pull_to_posix_subdir]" 
        ./api -as "[api::norns_submit_push_errors]"          
        ./api -as "[api::norns_submit_push_links]"           
        ./api -as "[api::norns_submit_push_memory_to_posix_file]"   
        ./api -as "[api::norns_submit_push_memory_to_posix_file_errors]"   
        ./api -as "[api::norns_submit_push_to_posix_file]"   
        ./api -as "[api::norns_submit_push_to_posix_subdir]" 
        ./api -as "[api::norns_submit_remove_local_posix_files]"
        ./api -as "[api::nornsctl_add_process]"
        ./api -as "[api::nornsctl_register_job]"
        ./api -as "[api::nornsctl_register_namespace]"
        ./api -as "[api::nornsctl_remove_process]"
        ./api -as "[api::nornsctl_send_command]"
        ./api -as "[api::nornsctl_status]"
        ./api -as "[api::nornsctl_unregister_job]"
        ./api -as "[api::nornsctl_unregister_namespace]"
        ./api -as "[api::nornsctl_update_job]"
  artifacts:
    paths:
      - "${CI_PROJECT_DIR}/build/tests"
    when: on_failure
    expire_in: 1 week

Alberto Miranda's avatar
Alberto Miranda committed
################################################################################
# Coverage jobs
################################################################################

###
build:coverage:
  image: bscstorage/norns-build-deps:gcc8.1-libfabric1.7.1-mercury1.0.1
Alberto Miranda's avatar
Alberto Miranda committed
  stage: build
  variables: 
    CFLAGS: "-O0 --coverage"
    CXXFLAGS: "-O0 --coverage"
    LDFLAGS: "--coverage"
  script:
    - |
      (
        set -Eeuo pipefail
        set -x
        ./bootstrap.sh
        mkdir build && cd build
        ../configure --enable-tests 
        make -j$(nproc)
        cd tests
        make -j$(nproc) core
        make -j$(nproc) api
      )
    - find "${CI_PROJECT_DIR}/build" \( -name "*.o" -or -name "*.lo" \) -delete
    - du -h "${CI_PROJECT_DIR}/build"
  artifacts:
    paths:
      - "${CI_PROJECT_DIR}/build"
    expire_in: 1 day

### 
test:coverage:
  image: bscstorage/norns-build-deps:gcc8.1-libfabric1.7.1-mercury1.0.1
Alberto Miranda's avatar
Alberto Miranda committed
  stage: test
  dependencies:
    - build:coverage
  variables: 
    NORNS_DEBUG_CONFIG_FILE_OVERRIDE: 1
  script:
    - |
      (
        set -Eeuo pipefail
        set -x
        cd build/tests
        ./core -as
        ./api -as "[api::NORNS_TASK]"
        ./api -as "[api::norns_error]"
        ./api -as "[api::norns_iotask_init]"
        ./api -as "[api::norns_resource_init]"
        ./api -as "[api::norns_submit]"
        ./api -as "[api::norns_submit_copy_buffer_to_file]"
        ./api -as "[api::norns_submit_copy_local_posix_files]"
        ./api -as "[api::norns_submit_pull_errors]"          
        ./api -as "[api::norns_submit_pull_links]"           
        ./api -as "[api::norns_submit_pull_to_posix_file]"   
        ./api -as "[api::norns_submit_pull_to_posix_subdir]" 
        ./api -as "[api::norns_submit_push_errors]"          
        ./api -as "[api::norns_submit_push_links]"           
        ./api -as "[api::norns_submit_push_memory_to_posix_file]"   
        ./api -as "[api::norns_submit_push_memory_to_posix_file_errors]"   
        ./api -as "[api::norns_submit_push_to_posix_file]"   
        ./api -as "[api::norns_submit_push_to_posix_subdir]" 
        ./api -as "[api::norns_submit_remove_local_posix_files]"
        ./api -as "[api::nornsctl_add_process]"
        ./api -as "[api::nornsctl_register_job]"
        ./api -as "[api::nornsctl_register_namespace]"
        ./api -as "[api::nornsctl_remove_process]"
        ./api -as "[api::nornsctl_send_command]"
        ./api -as "[api::nornsctl_status]"
        ./api -as "[api::nornsctl_unregister_job]"
        ./api -as "[api::nornsctl_unregister_namespace]"
        ./api -as "[api::nornsctl_update_job]"
        cd ${CI_PROJECT_DIR}/build 
        ${CI_PROJECT_DIR}/gencov.sh
        genhtml -o html/coverage norns.info
Alberto Miranda's avatar
Alberto Miranda committed
  artifacts:
    paths:
Alberto Miranda's avatar
Alberto Miranda committed
      - build/html/coverage/
Alberto Miranda's avatar
Alberto Miranda committed
    expire_in: 1 week


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