Skip to content
Snippets Groups Projects
.gitlab-ci.yml 4.68 KiB
Newer Older
  • Learn to ignore specific revisions
  • Konstantiss's avatar
    Konstantiss committed
      GIT_SUBMODULE_STRATEGY: recursive
    
    kongr45gpen's avatar
    kongr45gpen committed
    stages:
      - build
    
    Konstantiss's avatar
    Konstantiss committed
      - analyze
    
    kongr45gpen's avatar
    kongr45gpen committed
      - test
    
    kongr45gpen's avatar
    kongr45gpen committed
    
    
    Konstantiss's avatar
    Konstantiss committed
    check-build:
      image: spacedot/build-base # TODO: push build-base
    
    kongr45gpen's avatar
    kongr45gpen committed
      stage: build
    
        GCC_COLORS: "error=31;1:warning=35;1:note=36;1:range1=32:range2=34:locus=39;1:quote=39;1:fixit-insert=32:fixit-delete=31:diff-filename=39;1:diff-hunk=32:diff-delete=31:diff-insert=32:type-diff=32;1"
        CLICOLOR_FORCE: 1 # Necessary for cmake to output colours
    
    kongr45gpen's avatar
    kongr45gpen committed
      script:
    
    Konstantiss's avatar
    Konstantiss committed
        - cmake . -DCMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -fdiagnostics-color=always"
        - make -j$(nproc)
    
    Konstantiss's avatar
    Konstantiss committed
    cppcheck:
      image: spacedot/cppcheck:2.5
      stage: analyze
      before_script:
        - cppcheck --version
      allow_failure: true
    
    kongr45gpen's avatar
    kongr45gpen committed
      script:
    
    Konstantiss's avatar
    Konstantiss committed
        - cd $CI_PROJECT_DIR
        - cppcheck --enable=all --addon=misra --suppress=misra-c2012-3.1 --suppress=misra-c2012-5.1 --suppress=misra-c2012-5.2 \
          --suppress=misra-c2012-5.3 --suppress=misra-c2012-12.3 --suppress=misra-c2012-13.4 --suppress=misra-c2012-14.4 \
          --suppress=misra-c2012-15.5 --suppress=misra-c2012-16.3 --suppress=misra-c2012-18.4 --suppress=misra-c2012-18.8 \
          --suppress=unusedFunction --suppress=noExplicitConstructor --force --inline-suppr --error-exitcode=1 \
          --xml --xml-version=2 2>report.xml -I ./inc ./src
    
    kongr45gpen's avatar
    kongr45gpen committed
      after_script:
    
    Konstantiss's avatar
    Konstantiss committed
        - mkdir cppcheck-html-report
        - cppcheck-htmlreport --source-dir=. --title=html-report --file=report.xml --report-dir=cppcheck-html-report
    
    kongr45gpen's avatar
    kongr45gpen committed
      artifacts:
    
    Konstantiss's avatar
    Konstantiss committed
        when: on_failure
        paths:
          - ./cppcheck-html-report
    
    kongr45gpen's avatar
    kongr45gpen committed
    
    
    Konstantiss's avatar
    Konstantiss committed
    clang-tidy:
    
    kongr45gpen's avatar
    kongr45gpen committed
      image: spacedot/clang-tools:13.0.0-html-1.4.1
    
    Konstantiss's avatar
    Konstantiss committed
      stage: analyze
    
    kongr45gpen's avatar
    kongr45gpen committed
      script:
    
    Konstantiss's avatar
    Konstantiss committed
        - cd $CI_PROJECT_DIR
        - cmake -B ./build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
    
    kongr45gpen's avatar
    kongr45gpen committed
        - clang-tidy -p $CI_PROJECT_DIR/build/compile_commands.json --config-file=$CI_PROJECT_DIR/ci/.clang-tidy --use-color `find $CI_PROJECT_DIR/src $CI_PROJECT_DIR/inc -not -path "*/Platform/*" -type f -regextype posix-egrep -regex '.*\.(cpp|hpp|c|h)'` | tee clang-tidy-output.log
    
    Konstantiss's avatar
    Konstantiss committed
      after_script:
    
    kongr45gpen's avatar
    kongr45gpen committed
        - sed -e 's/\x1b\[[0-9;]*m//g' -i clang-tidy-output.log
    
    Konstantiss's avatar
    Konstantiss committed
        - mkdir clang-tidy-html-report
        - clang-tidy-html clang-tidy-output.log
        - mv clang.html clang-tidy-html-report
      artifacts:
    
    kongr45gpen's avatar
    kongr45gpen committed
        when: always
    
    Konstantiss's avatar
    Konstantiss committed
        paths:
          - ./clang-tidy-html-report
    
    Konstantiss's avatar
    Konstantiss committed
    clang-analyzer:
      image: spacedot/clang-tools:13.0.0-html-1.3.7
      stage: analyze
    
    Konstantiss's avatar
    Konstantiss committed
        - mkdir scan-build-html-report
    
    Konstantiss's avatar
    Konstantiss committed
        - cd $CI_PROJECT_DIR
        - scan-build cmake ./ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
        - scan-build -o ./scan-build-html-report make
      artifacts:
        paths:
          - ./scan-build-html-report
    
    Konstantiss's avatar
    Konstantiss committed
    doxygen:
      image: spacedot/doxygen:1.9.2-awesomecss-1.6.0
      stage: analyze
    
    Konstantiss's avatar
    Konstantiss committed
        - cd $CI_PROJECT_DIR
    
        - doxygen
    
    Konstantiss's avatar
    Konstantiss committed
      artifacts:
        paths:
    
          - ./docs/html
    
    Konstantiss's avatar
    Konstantiss committed
    ikos:
      image: spacedot/ikos:3.0
      stage: analyze
      before_script:
        - mkdir ikos-report
      script:
        - cd $CI_PROJECT_DIR
        - ikos-scan cmake .
    
        - ikos-scan make tests
    
    Konstantiss's avatar
    Konstantiss committed
        - ikos tests.bc
        - ikos-report -o=ikos-report.txt output.db
      after_script:
        - mv ikos-report.txt ikos-report
        - mv output.db ikos-report
      artifacts:
        paths:
          - ./ikos-report
    tests:
      image: spacedot/coverage:gcovr-5.0-lcov-1.15
      stage: test
      when: always
      before_script:
        - mkdir gcovr
      script:
        - cd $CI_PROJECT_DIR
        - cmake . -DCMAKE_CXX_FLAGS="-g -O0 --coverage" && make tests -j$(nproc)
        - lcov -q --capture --initial --directory . -o coverage_base
    
    athatheo's avatar
    athatheo committed
        - ./tests --colour-mode ansi
    
    Konstantiss's avatar
    Konstantiss committed
        - lcov -q --capture --directory . -o coverage_tests
        - lcov -q -a coverage_base -a coverage_tests -o coverage_total_unfiltered
        - lcov -q --remove coverage_total_unfiltered "${PWD}/lib/*" "${PWD}/CMakeFiles/*" "${PWD}/test/*" "${PWD}/src/main.cpp" -o coverage_total_filtered
        - gcovr -s -p -e "^.*(test|lib|main.cpp|CMakeFiles)" --html --html-details --html-title "Code coverage ${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME}" -o ./gcovr/gcovr.html
        - gcovr -e "^.*(test|lib|main.cpp|CMakeFiles)"
        - genhtml --demangle-cpp -t "${CI_COMMIT_REF_NAME}" --html-epilog ci/page_style/epilog.html -o ./gcovr coverage_total_filtered
      artifacts:
        paths:
          - ./gcovr
    
    Konstantiss's avatar
    Konstantiss committed
      image: spacedot/build-base:latest # TODO: Latest tag is temporary
    
    Grigoris Pavlakis's avatar
    Grigoris Pavlakis committed
      script:
    
    Konstantiss's avatar
    Konstantiss committed
        - mkdir .public
    
        - cp -r ./docs/html ./.public/docs
        - cp -r ./{gcovr,ikos-report,scan-build-html-report,clang-tidy-html-report,cppcheck-html-report} ./.public/
    
    Konstantiss's avatar
    Konstantiss committed
        - ls ./.public
        - find ./.public
        - mv .public public
    
      after_script:
    
    kongr45gpen's avatar
    kongr45gpen committed
        - "echo Artifacts for this build: ${CI_JOB_URL}/artifacts/browse"
    
        - "echo Base page for this branch: ${CI_PAGES_URL}"
    
    kongr45gpen's avatar
    kongr45gpen committed
        expose_as: 'build artifacts and documentation'
    
        paths:
          - public # Upload the resulting website
    
    Konstantiss's avatar
    Konstantiss committed
          #  only:
          #    - branches # Deploy on all branches