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}
            make htmldocs > doc.log 2>&1;
            python2 ./scripts/filter-known-issues.py --config-dir .known-issues/doc/ doc.log > doc.warnings;
            if [ "$?" != 0 ]; then
              echo " ==> Error running filter script"
              exit 1
            fi;
            if [ -s doc.warnings ]; then
              echo " => New documentation warnings/errors";
            fi;
            echo "- Verify commit message and coding style";
            ./scripts/ci/check-compliance.py --commits ${COMMIT_RANGE} || 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
