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="2"
    matrix:
        - MATRIX_BUILD="1"
        - MATRIX_BUILD="2"

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

    ci:
      - export CCACHE_DIR=${SHIPPABLE_BUILD_DIR}/ccache/.ccache
      - source zephyr-env.sh
      - ccache -c -s --max-size=2000M
      - make host-tools
      - export PREBUILT_HOST_TOOLS=${ZEPHYR_BASE}/bin
      - >
          if [ "$IS_PULL_REQUEST" = "true" ]; then
            S3_PATH="s3://zephyr-logs/pull-requests/${REPO_FULL_NAME}/${PULL_REQUEST}"
          else
            if [ "$JOB_TRIGGERED_BY_NAME" = "undefined" ]; then
              LOG_TYPE="manual";
            else
              LOG_TYPE=${JOB_TRIGGERED_BY_NAME};
            fi;

            S3_PATH="s3://zephyr-logs/${LOG_TYPE}/${REPO_FULL_NAME}/${BUILD_NUMBER}";
          fi;
      - >
          if [ "$MATRIX_BUILD" = "1" -a "$IS_PULL_REQUEST" = "true" ]; then
            export COMMIT_RANGE=origin/${PULL_REQUEST_BASE_BRANCH}..${COMMIT}
            echo "Building a Pull Request";
            echo "- Building Documentation";
            echo "Commit range:" ${COMMIT_RANGE}
            sudo pip install sphinx==1.5.5
            make htmldocs > doc.log 2>&1;
            ./scripts/filter-known-issues.py --config-dir .known-issues/doc/ doc.log > doc.warnings;
            if [ -s doc.warnings ]; then
              echo " => New documentation warnings/errors";
            fi;
            echo "- Verify commit message and coding style";
            ./scripts/ci/check-compliance.py || true;
          fi;
      - >
          if [ "$JOB_TRIGGERED_BY_NAME" = "daily-verify" ]; then
            echo "- Building with --all --enable-slow";
            COVERAGE="--all --enable-slow";
          fi;
      - >
          ./scripts/sanitycheck ${PLATFORMS} --subset ${MATRIX_BUILD}/${MATRIX_BUILDS} ${COVERAGE} ${SANITYCHECK_OPTIONS} || ./scripts/sanitycheck ${PLATFORMS} --subset ${MATRIX_BUILD}/${MATRIX_BUILDS}  ${COVERAGE} ${SANITYCHECK_OPTIONS_RETRY};
      - ccache -s
    on_success:
      - rm -rf sanity-out out-2nd-pass
      - mkdir -p shippable/testresults
      - >
          if [ -e compliance.xml ]; then
            cp compliance.xml shippable/testresults/;
            aws s3 cp compliance.xml ${S3_PATH}/;
          fi;
      - >
          if [ -e ./scripts/sanity_chk/last_sanity.xml ]; then
            cp ./scripts/sanity_chk/last_sanity.xml shippable/testresults/;
            aws s3 cp ./scripts/sanity_chk/last_sanity.xml ${S3_PATH}/sanitycheck.xml;
          fi;
    on_failure:
      - rm -rf sanity-out out-2nd-pass
      - mkdir -p shippable/testresults
      - >
          if [ -e compliance.xml ]; then
            cp compliance.xml shippable/testresults/;
            aws s3 cp compliance.xml ${S3_PATH}/;
          fi;
      - >
          if [ -e ./scripts/sanity_chk/last_sanity.xml ]; then
            cp ./scripts/sanity_chk/last_sanity.xml shippable/testresults/;
            aws s3 cp ./scripts/sanity_chk/last_sanity.xml ${S3_PATH}/sanitycheck.xml;
          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
