language: c

compiler: gcc

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

build:
    cache: true
    cache_dir_list:
        - ${SHIPPABLE_BUILD_DIR}/ccache
    pre_ci_boot:
        image_name: zephyrprojectrtos/ci
        image_tag: v0.1
        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
      - make host-tools
      - export PREBUILT_HOST_TOOLS=${ZEPHYR_BASE}/bin
      - >
          if [ "$MATRIX_BUILD" = "3" -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 > doc.warnings 2>&1;
            if [ -s doc.warnings ]; then
              echo " => New documentation warnings/errors";
            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 +modified_boards.args --save-tests test_file.txt;
            fi;
            if [ -s modified_tests.args ]; then
              ./scripts/sanitycheck +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  --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 sanity-out out-2nd-pass
      - mkdir -p shippable/testresults
      - >
          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 sanity-out out-2nd-pass
      - mkdir -p shippable/testresults
      - >
          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
