summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
diff options
context:
space:
mode:
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r--.gitlab-ci.yml131
1 files changed, 112 insertions, 19 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8936070470..845c7bd654 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -24,7 +24,7 @@ cache:
- .cache/pip
- venv/
- modules/
- - zephyr/main
+ - zephyr/
# The directory structure is:
@@ -34,11 +34,9 @@ cache:
before_script:
- export MODULES_DIR="$CI_PROJECT_DIR/modules"
- mkdir -p "${MODULES_DIR}"
- - export ZEPHYR_ROOT="$CI_PROJECT_DIR/zephyr/main"
- - mkdir -p "${ZEPHYR_ROOT}"
- - test -d "${ZEPHYR_ROOT}/v2.6" || git clone --depth 1 -b chromeos-v2.6 https://chromium.googlesource.com/chromiumos/third_party/zephyr "${ZEPHYR_ROOT}/v2.6"
- - test -d "${ZEPHYR_ROOT}/v2.7" || git clone --depth 1 -b chromeos-v2.7 https://chromium.googlesource.com/chromiumos/third_party/zephyr "${ZEPHYR_ROOT}/v2.7"
- - test -d "${ZEPHYR_ROOT}/v2.8" || git clone --depth 1 -b chromeos-v2.8 https://chromium.googlesource.com/chromiumos/third_party/zephyr "${ZEPHYR_ROOT}/v2.8"
+ - export ZEPHYR_BASE="${CI_PROJECT_DIR}/zephyr/main"
+ - mkdir -p "${ZEPHYR_BASE}"
+ - test -d "${ZEPHYR_BASE}/.git" || git clone --depth 1 -b main https://chromium.googlesource.com/chromiumos/third_party/zephyr "${ZEPHYR_BASE}"
- test -d "${MODULES_DIR}/cmsis" || git clone --depth 1 -b chromeos-main https://chromium.googlesource.com/chromiumos/third_party/zephyr/cmsis "${MODULES_DIR}/cmsis"
- test -d "${MODULES_DIR}/hal_stm32" || git clone --depth 1 -b chromeos-main https://chromium.googlesource.com/chromiumos/third_party/zephyr/hal_stm32 "${MODULES_DIR}/hal_stm32"
- test -d "${MODULES_DIR}/nanopb" || git clone --depth 1 -b main https://chromium.googlesource.com/chromiumos/third_party/zephyr/nanopb "${MODULES_DIR}/nanopb"
@@ -46,9 +44,8 @@ before_script:
- ln -s "$(pwd)" "${MODULES_DIR}/ec"
- python3 -V # Print out python version for debugging
- python3 -m pip install zephyr/zmake --user
- - python3 -m pip install pyyaml
+ - python3 -m pip install pyyaml packaging
- export BUILD_DIR=build
- - export ZEPHYR_DIR=/zephyr
- export PATH="$PATH:$HOME/.local/bin"
- export PYTHONIOENCODING=utf-8
- export EC_DIR=/builds/zephyr-ec/ec
@@ -62,10 +59,10 @@ seed_cache:
- .cache/pip
- venv/
- modules/
- - zephyr/main
+ - zephyr/
policy: push
script:
- - ls "${MODULES_DIR}" "${ZEPHYR_ROOT}"
+ - ls "${MODULES_DIR}" "${ZEPHYR_BASE}"
# Users of this template must set:
# $PROJECT to the project to build. E.g., "lazor"
@@ -73,7 +70,7 @@ seed_cache:
stage: build
needs: ["seed_cache"]
script:
- - zmake --zephyr-root "${ZEPHYR_ROOT}"
+ - zmake --zephyr-base "${ZEPHYR_BASE}"
--modules-dir "${MODULES_DIR}" -l DEBUG configure -b
-B "${BUILD_DIR}/${PROJECT}" -t ${TOOLCHAIN:-zephyr}
"${PROJECT}"
@@ -92,17 +89,48 @@ seed_cache:
# Users of this template must set:
# $PROJECT to the project to build. E.g., "lazor"
+# Builds the project with coverage enabled, removes the non-ec files.
+# Then merges with the tests, excludes all files not used by this project,
+# and generates a report.
.coverage_template: &coverage_template
stage: test
- needs: ["merged_coverage", "zephyr_coverage"]
+ needs: ["merged_coverage", "zephyr_coverage", "twister_coverage"]
script:
- - grep "SF:" "build/zcoverage/${PROJECT}.info" | sort -u | sed -e 's|^SF:||' | xargs lcov -o build/no_zephyr_${PROJECT}.info -e build/merged_no_zephyr.info
- - /usr/bin/genhtml -q -o build/no_zephyr_${PROJECT}_rpt -t "${PROJECT} coverage w/o zephyr" -p ${EC_DIR} -s build/no_zephyr_${PROJECT}.info
+ - zmake --zephyr-base "${ZEPHYR_BASE}"
+ --modules-dir "${MODULES_DIR}" -l DEBUG configure -b --coverage
+ -B "${BUILD_DIR}/${PROJECT}" -t ${TOOLCHAIN:-zephyr}
+ "${PROJECT}"
+ - lcov -o "${BUILD_DIR}/${PROJECT}/merged_twister.info" -a "${BUILD_DIR}/${PROJECT}/lcov.info" -a "${BUILD_DIR}/zephyr_codecov/fixed.info"
+ - lcov -o "${BUILD_DIR}/${PROJECT}/merged_twister_no_ec.info" -e "${BUILD_DIR}/${PROJECT}/merged_twister.info" "${ZEPHYR_BASE}/**" "${MODULES_DIR}/**"
+ - grep "SF:" "${BUILD_DIR}/${PROJECT}/lcov.info" | sort -u |
+ sed -e 's|^SF:||' | xargs lcov
+ -o "${BUILD_DIR}/${PROJECT}/filtered_twister.info"
+ -e "${BUILD_DIR}/${PROJECT}/merged_twister_no_ec.info"
+ - /usr/bin/genhtml -q -o "${BUILD_DIR}/${PROJECT}/filtered_twister_rpt"
+ -t "${PROJECT} coverage of twister tests"
+ -s "${BUILD_DIR}/${PROJECT}/filtered_twister.info"
+ - lcov -o "${BUILD_DIR}/${PROJECT}/merged.info"
+ -a "${BUILD_DIR}/${PROJECT}/lcov.info" -a build/merged.info
+ - lcov -o "${BUILD_DIR}/${PROJECT}/no_zephyr.info"
+ -r "${BUILD_DIR}/${PROJECT}/lcov.info" "${ZEPHYR_BASE}/**"
+ "${MODULES_DIR}/*" "${EC_DIR}/zephyr/drivers/*" '/usr/include/x86_64-linux-gnu/*'
+ - lcov -o "${BUILD_DIR}/${PROJECT}/merged_no_zephyr.info"
+ -r "${BUILD_DIR}/${PROJECT}/merged.info" "${ZEPHYR_BASE}/**"
+ "${MODULES_DIR}/*" "${EC_DIR}/zephyr/drivers/*" '/usr/include/x86_64-linux-gnu/*'
+ - grep "SF:" "${BUILD_DIR}/${PROJECT}/no_zephyr.info" | sort -u |
+ sed -e 's|^SF:||' | xargs lcov
+ -o "${BUILD_DIR}/${PROJECT}/filtered_no_zephyr.info"
+ -e "${BUILD_DIR}/${PROJECT}/merged_no_zephyr.info"
+ - /usr/bin/genhtml -q -o "${BUILD_DIR}/${PROJECT}/filtered_no_zephyr_rpt"
+ -t "${PROJECT} coverage w/o zephyr"
+ -p ${EC_DIR}
+ -s "${BUILD_DIR}/${PROJECT}/filtered_no_zephyr.info"
artifacts:
paths:
- - build/*.info
- - build/*_rpt
+ - build/${PROJECT}/*.info
+ - build/${PROJECT}/*_rpt
expire_in: 1 week
+ when: always
coverage: '/lines\.*: \d+\.\d+%/'
delbin:
@@ -115,6 +143,11 @@ hayato:
PROJECT: "hayato"
<<: *build_template
+hayato_coverage:
+ variables:
+ PROJECT: "hayato"
+ <<: *coverage_template
+
herobrine_npcx9:
variables:
PROJECT: "herobrine_npcx9"
@@ -130,6 +163,26 @@ it8xxx2_evb:
PROJECT: "it8xxx2_evb"
<<: *build_template
+kingler:
+ variables:
+ PROJECT: "kingler"
+ <<: *build_template
+
+kingler_coverage:
+ variables:
+ PROJECT: "kingler"
+ <<: *coverage_template
+
+krabby:
+ variables:
+ PROJECT: "krabby"
+ <<: *build_template
+
+krabby_coverage:
+ variables:
+ PROJECT: "krabby"
+ <<: *coverage_template
+
lazor:
variables:
PROJECT: "lazor"
@@ -141,6 +194,16 @@ native_posix:
TOOLCHAIN: "host"
<<: *build_template
+skyrim:
+ variables:
+ PROJECT: "skyrim"
+ <<: *build_template
+
+skyrim_coverage:
+ variables:
+ PROJECT: "skyrim"
+ <<: *coverage_template
+
volteer:
variables:
PROJECT: "volteer"
@@ -165,7 +228,7 @@ zephyr_coverage:
stage: test
needs: ["seed_cache"]
script:
- - zmake --zephyr-root "${ZEPHYR_ROOT}"
+ - zmake --zephyr-base "${ZEPHYR_BASE}"
--modules-dir "${MODULES_DIR}" -l DEBUG coverage
"${BUILD_DIR}/zcoverage"
artifacts:
@@ -180,7 +243,12 @@ merged_coverage:
needs: ["ec_coverage", "zephyr_coverage"]
script:
- lcov -o build/merged.info -a build/coverage/lcov.info -a build/zcoverage/lcov.info
- - lcov -o build/merged_no_zephyr.info -r build/merged.info "${ZEPHYR_ROOT}/*" "${MODULES_DIR}/*" "zephyr/drivers/*" '/usr/include/x86_64-linux-gnu/*'
+ - lcov -o build/merged_no_zephyr.info -r build/merged.info
+ "${ZEPHYR_BASE}/**" "${MODULES_DIR}/**"
+ "${EC_DIR}/zephyr/drivers/**" "${EC_DIR}/zephyr/include/drivers/**"
+ "${EC_DIR}/zephyr/shim/chip/**" "${EC_DIR}/zephyr/shim/core/**"
+ "${EC_DIR}/zephyr/projects/**"
+ '/usr/include/x86_64-linux-gnu/**'
artifacts:
paths:
- build/*.info
@@ -192,6 +260,31 @@ testall:
stage: test
needs: ["seed_cache"]
script:
- - zmake --zephyr-root "${ZEPHYR_ROOT}"
+ - zmake --zephyr-base "${ZEPHYR_BASE}"
--modules-dir "${MODULES_DIR}" -l DEBUG testall
+twister_coverage:
+ stage: test
+ needs: ["seed_cache"]
+ script:
+ - mkdir -p build/zephyr_codecov
+ - for commitid in $(cd "${ZEPHYR_BASE}" ; git fetch --depth=100 ; git log | awk '/GitOrigin-RevId:/ {print $2}') ; do
+ echo "COMMITID = ${commitid?}" ;
+ if wget -O /tmp/coverage.html "https://codecov.io/gh/zephyrproject-rtos/zephyr/commit/${commitid?}/build" ; then
+ downloadurl=$(sed -e '/download\/build/!d' -e 's|^.*href="|https://codecov.io|' -e 's|".*$||' /tmp/coverage.html | head -1) ;
+ echo "DOWNLOADURL = ${downloadurl?}" ;
+ wget -O build/zephyr_codecov/merged.info.raw "${downloadurl?}" ;
+ sed <build/zephyr_codecov/merged.info.raw >build/zephyr_codecov/merged.info
+ -e '1,/<<<<<< network/d' -e '/<<<<<< EOF/,$d' ;
+ sed <build/zephyr_codecov/merged.info >build/zephyr_codecov/fixed.info
+ -e "s|/__w/zephyr/zephyr|${ZEPHYR_BASE}|"
+ -e "s|/__w/zephyr/modules/hal/cmsis|${MODULES_DIR}/cmsis|"
+ -e "s|/__w/zephyr/modules|${MODULES_DIR}|" ;
+ break ;
+ fi ;
+ done
+ - lcov --summary build/zephyr_codecov/fixed.info
+ artifacts:
+ paths:
+ - build/zephyr_codecov/fixed.info
+ expire_in: 1 week