language: c

compiler: gcc

env:
    global:
        - SDK=0.9.2
        - SANITYCHECK_OPTIONS=" --inline-logs -R -N"
        - SANITYCHECK_OPTIONS_RETRY="${SANITYCHECK_OPTIONS} --only-failed --outdir=out-2nd-pass"
        - ZEPHYR_SDK_INSTALL_DIR=/opt/sdk/zephyr-sdk-0.9.2
        - ZEPHYR_GCC_VARIANT=zephyr
        - MATRIX_BUILDS="4"
        - MATRIX_BUILDS_EXTRA="4"
    matrix:
        - MATRIX_BUILD="1"
        - MATRIX_BUILD="2"
        - MATRIX_BUILD="3"
        - MATRIX_BUILD="4"

build:
    cache: true
    cache_dir_list:
        - ${SHIPPABLE_BUILD_DIR}/ccache
    pre_ci_boot:
        image_name: zephyrprojectrtos/ci
        image_tag: v0.3
        pull: true
        options: "-e HOME=/home/buildslave --privileged=true --tty --net=bridge --user buildslave"

    ci:
      - export CCACHE_DIR=${SHIPPABLE_BUILD_DIR}/ccache/.ccache
      - >
        if [ "$IS_PULL_REQUEST" = "true" ]; then
          git rebase origin/${PULL_REQUEST_BASE_BRANCH};
        fi
      - source zephyr-env.sh
      - ccache -c -s --max-size=2000M
      - >
          if [ "$MATRIX_BUILD" = "4" -a "$IS_PULL_REQUEST" = "true" ]; then
            export COMMIT_RANGE=origin/${PULL_REQUEST_BASE_BRANCH}..HEAD
            echo "Building a Pull Request";
            echo "- Building Documentation";
            echo "Commit range:" ${COMMIT_RANGE}
            make htmldocs
            if [ "$?" != "0" ]; then
              echo "Documentation build failed";
              exit 1;
            fi
            if [ -s doc/doc.warnings ]; then
              echo " => New documentation warnings/errors";
              cp doc/doc.warnings doc.warnings
            fi;
            echo "- Verify commit message, coding style, doc build";
            ./scripts/ci/check-compliance.py --commits ${COMMIT_RANGE} || true;
          fi;
      - >
          if [ "$IS_PULL_REQUEST" = "true" ]; then
            ./scripts/ci/get_modified_tests.py --commits origin/${PULL_REQUEST_BASE_BRANCH}..HEAD > modified_tests.args;
            ./scripts/ci/get_modified_boards.py --commits origin/${PULL_REQUEST_BASE_BRANCH}..HEAD > modified_boards.args;

            if [ -s modified_boards.args ]; then
              ./scripts/sanitycheck ${SANITYCHECK_OPTIONS} +modified_boards.args --save-tests test_file.txt;
            fi;
            if [ -s modified_tests.args ]; then
              ./scripts/sanitycheck ${SANITYCHECK_OPTIONS} +modified_tests.args --save-tests test_file.txt;
            fi;
            rm -f modified_tests.args modified_boards.args;
          fi;
      - ./scripts/sanitycheck ${SANITYCHECK_OPTIONS} --save-tests test_file.txt
      - ./scripts/sanitycheck ${SANITYCHECK_OPTIONS} --load-tests test_file.txt --subset ${MATRIX_BUILD}/${MATRIX_BUILDS} || ./scripts/sanitycheck ${SANITYCHECK_OPTIONS_RETRY} || ./scripts/sanitycheck ${SANITYCHECK_OPTIONS_RETRY}
      - rm test_file.txt
      - ccache -s
    on_failure:
      - rm -rf ccache
      - mkdir -p shippable/testresults
      - mkdir -p shippable/codecoverage
      - source zephyr-env.sh
      - >
         if [ "$MATRIX_BUILD" = "1" ]; then
            gcovr -r ${ZEPHYR_BASE} -x > shippable/codecoverage/coverage.xml;
            mv sanity-out/native_posix/ coverage_native_posix/;
            rm -rf sanity-out out-2nd-pass;
            bash <(curl -s https://codecov.io/bash) -f '!*.lst' -X coveragepy -X fixes;
            rm -rf coverage_native_posix/;
         else
            rm -rf sanity-out out-2nd-pass;
         fi;
      - >
          if [ -e compliance.xml ]; then
            cp compliance.xml shippable/testresults/;
          fi;
      - >
          if [ -e ./scripts/sanity_chk/last_sanity.xml ]; then
            cp ./scripts/sanity_chk/last_sanity.xml shippable/testresults/;
          fi;
    on_success:
      - rm -rf ccache
      - mkdir -p shippable/testresults
      - mkdir -p shippable/codecoverage
      - source zephyr-env.sh
      - >
         if [ "$MATRIX_BUILD" = "1" ]; then
            gcovr -r ${ZEPHYR_BASE} -x > shippable/codecoverage/coverage.xml;
            mv sanity-out/native_posix/ coverage_native_posix/;
            rm -rf sanity-out out-2nd-pass;
            bash <(curl -s https://codecov.io/bash) -f '!*.lst' -X coveragepy -X fixes;
            rm -rf coverage_native_posix/;
         else
            rm -rf sanity-out out-2nd-pass;
         fi;
      - >
          if [ -e compliance.xml ]; then
            cp compliance.xml shippable/testresults/;
          fi;
      - >
          if [ -e ./scripts/sanity_chk/last_sanity.xml ]; then
            cp ./scripts/sanity_chk/last_sanity.xml shippable/testresults/;
          fi;

integrations:
  notifications:
    - integrationName: slack_integration
      type: slack
      recipients:
        - "#ci"
      branches:
        only:
          - master
      on_success: never
      on_failure: always
    - integrationName: email
      type: email
      recipients:
        - builds@zephyrproject.org
      branches:
        only:
          - master
          - net
          - bluetooth
          - arm
      on_success: never
      on_failure: never
