From 09538c5a751c132c82d0525060bcab1f686d3f57 Mon Sep 17 00:00:00 2001 From: Kaspar Schleiser Date: Fri, 21 Feb 2020 10:31:43 +0100 Subject: [PATCH 1/4] dist: split out static tests from build_and_test.sh --- dist/tools/ci/build_and_test.sh | 58 +------------------------- dist/tools/ci/static_tests.sh | 73 +++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 57 deletions(-) create mode 100755 dist/tools/ci/static_tests.sh diff --git a/dist/tools/ci/build_and_test.sh b/dist/tools/ci/build_and_test.sh index 633e880c3f..67c9982f1f 100755 --- a/dist/tools/ci/build_and_test.sh +++ b/dist/tools/ci/build_and_test.sh @@ -9,46 +9,6 @@ CI_BASE_BRANCH=${CI_BASE_BRANCH:-master} -function print_result { - local RED="\033[0;31m" - local GREEN="\033[0;32m" - local NO_COLOUR="\033[0m" - - if (( "$1" == 0 )); then - echo -e "${GREEN}✓$NO_COLOUR" - else - echo -e "${RED}x$NO_COLOUR" - fi -} - -RESULT=0 -set_result() { - NEW_RESULT=$1 - - if (( $NEW_RESULT != 0)) - then - RESULT=$NEW_RESULT - fi -} - -function run { - echo -n "Running '$@' " - OUT=$($@ 2>&1) - NEW_RESULT=$? - - print_result $NEW_RESULT - set_result $NEW_RESULT - - # Indent command output so that its easily discernible from the rest - if [ -n "$OUT" ]; then - echo "Command output:" - echo "" - # Using printf to avoid problems if the command output begins with a - - (printf "%s\n" "$OUT" | while IFS= read -r line; do printf "\t%s\n" "$line"; done) - echo "" - fi -} - if [[ $BUILDTEST_MCU_GROUP ]] then export BASE_BRANCH="${CI_BASE_BRANCH}" @@ -80,23 +40,7 @@ then exit $RESULT fi - run make print-versions - - run ./dist/tools/commit-msg/check.sh ${CI_BASE_BRANCH} - run ./dist/tools/whitespacecheck/check.sh ${CI_BASE_BRANCH} - DIFFFILTER="MR" ERROR_EXIT_CODE=0 run ./dist/tools/licenses/check.sh - DIFFFILTER="AC" run ./dist/tools/licenses/check.sh - run ./dist/tools/doccheck/check.sh - run ./dist/tools/externc/check.sh - run ./dist/tools/cppcheck/check.sh - run ./dist/tools/vera++/check.sh - run ./dist/tools/pr_check/pr_check.sh ${CI_BASE_BRANCH} - run ./dist/tools/coccinelle/check.sh - run ./dist/tools/flake8/check.sh - run ./dist/tools/headerguards/check.sh - run ./dist/tools/buildsystem_sanity_check/check.sh - run ./dist/tools/codespell/check.sh - exit $RESULT + exec ./dist/tools/ci/static_tests.sh fi if [ "$BUILDTEST_MCU_GROUP" == "host" ]; then diff --git a/dist/tools/ci/static_tests.sh b/dist/tools/ci/static_tests.sh new file mode 100755 index 0000000000..e8053d1ac7 --- /dev/null +++ b/dist/tools/ci/static_tests.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2020 Kaspar Schleiser +# 2020 Inria +# 2020 Freie Universität Berlin +# 2015 Philipp Rosenkranz +# +# This file is subject to the terms and conditions of the GNU Lesser +# General Public License v2.1. See the file LICENSE in the top level +# directory for more details. +# + +function print_result { + local RED="\033[0;31m" + local GREEN="\033[0;32m" + local NO_COLOUR="\033[0m" + + if (( "$1" == 0 )); then + echo -e "${GREEN}✓$NO_COLOUR" + else + echo -e "${RED}x$NO_COLOUR" + fi +} + +set_result() { + NEW_RESULT=$1 + + if (( $NEW_RESULT != 0)) + then + RESULT=$NEW_RESULT + fi +} + +function run { + echo -n "Running '$@' " + OUT=$($@ 2>&1) + NEW_RESULT=$? + + print_result $NEW_RESULT + set_result $NEW_RESULT + + # Indent command output so that its easily discernible from the rest + if [ -n "$OUT" ]; then + echo "Command output:" + echo "" + # Using printf to avoid problems if the command output begins with a - + (printf "%s\n" "$OUT" | while IFS= read -r line; do printf "\t%s\n" "$line"; done) + echo "" + fi +} + +RESULT=0 + +CI_BASE_BRANCH=${CI_BASE_BRANCH:-master} + +export BASE_BRANCH="${CI_BASE_BRANCH}" + +run ./dist/tools/commit-msg/check.sh ${CI_BASE_BRANCH} +run ./dist/tools/whitespacecheck/check.sh ${CI_BASE_BRANCH} +DIFFFILTER="MR" ERROR_EXIT_CODE=0 run ./dist/tools/licenses/check.sh +DIFFFILTER="AC" run ./dist/tools/licenses/check.sh +run ./dist/tools/doccheck/check.sh +run ./dist/tools/externc/check.sh +run ./dist/tools/cppcheck/check.sh +run ./dist/tools/vera++/check.sh +run ./dist/tools/pr_check/pr_check.sh ${CI_BASE_BRANCH} +run ./dist/tools/coccinelle/check.sh +run ./dist/tools/flake8/check.sh +run ./dist/tools/headerguards/check.sh +run ./dist/tools/buildsystem_sanity_check/check.sh +run ./dist/tools/codespell/check.sh + +exit $RESULT From 5c44e27a7d096c31909c2d675e8ea9679b7555fa Mon Sep 17 00:00:00 2001 From: Kaspar Schleiser Date: Fri, 21 Feb 2020 10:32:14 +0100 Subject: [PATCH 2/4] murdock: use dist/tools/ci/static_tests.sh --- .murdock | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/.murdock b/.murdock index 60d2d8eeca..3194f4493e 100755 --- a/.murdock +++ b/.murdock @@ -329,24 +329,13 @@ run_test() { # execute static tests static_tests() { - local repo=${CI_BASE_REPO:-https://github.com/RIOT-OS/RIOT} - local branch=${CI_BASE_BRANCH:-master} - print_worker - - OUT="$(git remote add upstream $repo 2>&1 && git fetch upstream ${branch}:${branch} 2>&1)" - RES=$? - if [ $RES -ne 0 ]; then - echo "$OUT" - exit 1 - fi - - BUILDTEST_MCU_GROUP=static-tests ./dist/tools/ci/build_and_test.sh + ./dist/tools/ci/static_tests.sh } get_non_compile_jobs() { [ "$STATIC_TESTS" = "1" ] && \ - echo "$0 static_tests###{ \"jobdir\" : \"exclusive\" }" + echo "$0 static_tests" } get_jobs() { From 294b999d349b4ff5f56f4a01300f5b0e9638f721 Mon Sep 17 00:00:00 2001 From: Kaspar Schleiser Date: Wed, 26 Feb 2020 10:58:30 +0100 Subject: [PATCH 3/4] dist/tools/ci/static_tests.sh: fix shellcheck errors --- dist/tools/ci/static_tests.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dist/tools/ci/static_tests.sh b/dist/tools/ci/static_tests.sh index e8053d1ac7..ca0cf73961 100755 --- a/dist/tools/ci/static_tests.sh +++ b/dist/tools/ci/static_tests.sh @@ -25,15 +25,15 @@ function print_result { set_result() { NEW_RESULT=$1 - if (( $NEW_RESULT != 0)) + if (( NEW_RESULT != 0)) then RESULT=$NEW_RESULT fi } function run { - echo -n "Running '$@' " - OUT=$($@ 2>&1) + echo -n "Running \"$*\" " + OUT=$("$@" 2>&1) NEW_RESULT=$? print_result $NEW_RESULT @@ -55,15 +55,15 @@ CI_BASE_BRANCH=${CI_BASE_BRANCH:-master} export BASE_BRANCH="${CI_BASE_BRANCH}" -run ./dist/tools/commit-msg/check.sh ${CI_BASE_BRANCH} -run ./dist/tools/whitespacecheck/check.sh ${CI_BASE_BRANCH} +run ./dist/tools/commit-msg/check.sh "${CI_BASE_BRANCH}" +run ./dist/tools/whitespacecheck/check.sh "${CI_BASE_BRANCH}" DIFFFILTER="MR" ERROR_EXIT_CODE=0 run ./dist/tools/licenses/check.sh DIFFFILTER="AC" run ./dist/tools/licenses/check.sh run ./dist/tools/doccheck/check.sh run ./dist/tools/externc/check.sh run ./dist/tools/cppcheck/check.sh run ./dist/tools/vera++/check.sh -run ./dist/tools/pr_check/pr_check.sh ${CI_BASE_BRANCH} +run ./dist/tools/pr_check/pr_check.sh "${CI_BASE_BRANCH}" run ./dist/tools/coccinelle/check.sh run ./dist/tools/flake8/check.sh run ./dist/tools/headerguards/check.sh From f7bb189d3e90b526ee0e7c99450e71c4ce69633b Mon Sep 17 00:00:00 2001 From: Kaspar Schleiser Date: Wed, 26 Feb 2020 12:11:10 +0100 Subject: [PATCH 4/4] dist/tools/ci/static_tests.sh: tag base branch for Murdock --- dist/tools/ci/static_tests.sh | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/dist/tools/ci/static_tests.sh b/dist/tools/ci/static_tests.sh index ca0cf73961..13002560ad 100755 --- a/dist/tools/ci/static_tests.sh +++ b/dist/tools/ci/static_tests.sh @@ -51,19 +51,26 @@ function run { RESULT=0 +if [ -n "${CI_BASE_COMMIT}" ]; then + # on Murdock, there's no base branch in the checkout folder. + # Thus, tag it here. + echo "-- tagging ${CI_BASE_BRANCH} HEAD commit (${CI_BASE_COMMIT})" + git tag "${CI_BASE_BRANCH}" "${CI_BASE_COMMIT}" +fi + CI_BASE_BRANCH=${CI_BASE_BRANCH:-master} export BASE_BRANCH="${CI_BASE_BRANCH}" -run ./dist/tools/commit-msg/check.sh "${CI_BASE_BRANCH}" -run ./dist/tools/whitespacecheck/check.sh "${CI_BASE_BRANCH}" +run ./dist/tools/commit-msg/check.sh "${BASE_BRANCH}" +run ./dist/tools/whitespacecheck/check.sh "${BASE_BRANCH}" DIFFFILTER="MR" ERROR_EXIT_CODE=0 run ./dist/tools/licenses/check.sh DIFFFILTER="AC" run ./dist/tools/licenses/check.sh run ./dist/tools/doccheck/check.sh run ./dist/tools/externc/check.sh run ./dist/tools/cppcheck/check.sh run ./dist/tools/vera++/check.sh -run ./dist/tools/pr_check/pr_check.sh "${CI_BASE_BRANCH}" +run ./dist/tools/pr_check/pr_check.sh "${BASE_BRANCH}" run ./dist/tools/coccinelle/check.sh run ./dist/tools/flake8/check.sh run ./dist/tools/headerguards/check.sh