From 78131b1bed7f13c596d6c1b6083cad5b7d6f4425 Mon Sep 17 00:00:00 2001 From: Ross Burton Date: Thu, 10 Dec 2020 13:09:38 +0000 Subject: [PATCH] ci: fail any build that emits warnings Using a custom logging.yml we can instruct BitBake's logger to write all warnings and errors into a separate log file. Then after the build has finished we can see if the log file is empty and if not show it and abort the build. Change-Id: Ida835b5c822941fb513dfb1758b4ec195e0050fc Signed-off-by: Ross Burton --- .gitlab-ci.yml | 2 ++ kas/base.yml | 3 +++ kas/check-warnings | 18 ++++++++++++++++++ kas/logging.yml | 13 +++++++++++++ 4 files changed, 36 insertions(+) create mode 100755 kas/check-warnings create mode 100644 kas/logging.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d771a27b..1acb7e21 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -15,6 +15,7 @@ stages: KAS_WORK_DIR: $CI_PROJECT_DIR/work SSTATE_DIR: $CI_BUILDS_DIR/persist/sstate DL_DIR: $CI_BUILDS_DIR/persist/downloads + BB_LOGCONFIG: $CI_PROJECT_DIR/kas/logging.yml before_script: - echo KAS_WORK_DIR = $KAS_WORK_DIR - echo SSTATE_DIR = $SSTATE_DIR @@ -28,6 +29,7 @@ stages: - KASFILES=$(kas/jobs-to-kas $CI_JOB_NAME) - kas shell --update --force-checkout $KASFILES -c 'cat conf/*.conf' - kas build $KASFILES + - ./kas/check-warnings $KAS_WORK_DIR/build/warnings.log # diff --git a/kas/base.yml b/kas/base.yml index 0035a546..03ae7f6d 100644 --- a/kas/base.yml +++ b/kas/base.yml @@ -25,6 +25,9 @@ repos: layers: meta-oe: +env: + BB_LOGCONFIG: "" + local_conf_header: base: | CONF_VERSION = "1" diff --git a/kas/check-warnings b/kas/check-warnings new file mode 100755 index 00000000..cc396423 --- /dev/null +++ b/kas/check-warnings @@ -0,0 +1,18 @@ +#! /bin/bash + +# Expects the path to a log file as $1, and if this file has any content +# then display the contents and exit with an error code. + +set -e -u + +LOGFILE=$1 + +if test -s $LOGFILE; then + echo ============================== + echo The build had warnings/errors: + echo ============================== + cat $LOGFILE + exit 1 +fi + +exit 0 diff --git a/kas/logging.yml b/kas/logging.yml new file mode 100644 index 00000000..3af10295 --- /dev/null +++ b/kas/logging.yml @@ -0,0 +1,13 @@ +# Python logging configuration to write all warnings to a separate file +version: 1 + +handlers: + warnings: + class: logging.FileHandler + level: WARNING + filename: warnings.log + formatter: BitBake.logfileFormatter + +loggers: + BitBake: + handlers: [warnings]