language: c compiler: gcc env: global: - SDK=0.9.2 - 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.2 - ZEPHYR_TOOLCHAIN_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; 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 *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 - 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 *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