language: c

compiler: gcc

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

build:
    cache: true
    cache_dir_list:
        - ${SHIPPABLE_BUILD_DIR}/ccache
    pre_ci_boot:
        image_name: zephyrprojectrtos/ci
        image_tag: v0.4-rc2
        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=5000M
      - >
          if [ "$MATRIX_BUILD" = "5" -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 $HOME/.cache/zephyr
      - 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;
            lcov --capture --directory sanity-out/native_posix/ --directory sanity-out/unit_testing/ --output-file lcov.pre.info -q --rc lcov_branch_coverage=1;
            lcov -q --remove lcov.pre.info mylib.c --remove lcov.pre.info ext/\* --remove lcov.pre.info *generated* -o lcov.info --rc lcov_branch_coverage=1;
            rm lcov.pre.info;
            rm -rf sanity-out out-2nd-pass;
            bash <(curl -s https://codecov.io/bash) -f "lcov.info" -X coveragepy -X fixes;
            rm lcov.info;
         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 $HOME/.cache/zephyr
      - 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;
            lcov --capture --directory sanity-out/native_posix/ --directory sanity-out/unit_testing/ --output-file lcov.pre.info -q --rc lcov_branch_coverage=1;
            lcov -q --remove lcov.pre.info mylib.c --remove lcov.pre.info ext/\* --remove lcov.pre.info *generated* -o lcov.info --rc lcov_branch_coverage=1;
            rm lcov.pre.info;
            rm -rf sanity-out out-2nd-pass;
            bash <(curl -s https://codecov.io/bash) -f "lcov.info" -X coveragepy -X fixes;
            rm lcov.info;
         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
