[openwrt/openwrt] ci: show build failures directly in job log output

LEDE Commits lede-commits at lists.infradead.org
Sun Dec 4 08:37:27 PST 2022


ansuel pushed a commit to openwrt/openwrt.git, branch openwrt-22.03:
https://git.openwrt.org/a69b9a8962226f48590ee5ea063d66da912b9036

commit a69b9a8962226f48590ee5ea063d66da912b9036
Author: Petr Štetiar <ynezz at true.cz>
AuthorDate: Mon Aug 22 15:05:01 2022 +0200

    ci: show build failures directly in job log output
    
    Instead of waiting for complete workflow finish, then downloading the
    artifacts, unpacking them and inspecting them, lets try to make the
    build failure immediately visible in the log output:
    
      ====== Make errors from logs/target/linux/compile.txt ======
      * Legacy (non-UHI/non-FIT) Boards
      *
      Support MIPS SEAD-3 boards (LEGACY_BOARD_SEAD3) [N/y/?] (NEW)
      Error in reading or end of file.
    
      make[6]: *** [scripts/kconfig/Makefile:77: syncconfig] Error 1
      make[5]: *** [Makefile:616: syncconfig] Error 2
      make[4]: *** [Makefile:736: include/config/auto.conf.cmd] Error 2
      make[3]: *** [Makefile:24: build_dir/target-mipsel-openwrt-linux-musl_musl/linux-ramips_mt7620/linux-5.15.62/.modules] Error 2
      make[2]: *** [Makefile:11: compile] Error 2
      time: target/linux/compile#30.09#11.30#37.92
    
    Signed-off-by: Petr Štetiar <ynezz at true.cz>
    (cherry picked from commit f4ca4187cde01a3e412f10657bec0790d3a4cd94)
---
 .github/workflows/kernel.yml                     |  8 ++++----
 .github/workflows/scripts/show_build_failures.sh | 15 +++++++++++++++
 .github/workflows/tools.yml                      |  2 +-
 3 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/.github/workflows/kernel.yml b/.github/workflows/kernel.yml
index 4f8c6b9317..db4c6c7319 100644
--- a/.github/workflows/kernel.yml
+++ b/.github/workflows/kernel.yml
@@ -146,22 +146,22 @@ jobs:
       - name: Build tools
         shell: su buildbot -c "sh -e {0}"
         working-directory: openwrt
-        run: make tools/install -j$(nproc) BUILD_LOG=1
+        run: make tools/install -j$(nproc) BUILD_LOG=1 || ret=$? .github/workflows/scripts/show_build_failures.sh
 
       - name: Build toolchain
         shell: su buildbot -c "sh -e {0}"
         working-directory: openwrt
-        run: make toolchain/install -j$(nproc) BUILD_LOG=1
+        run: make toolchain/install -j$(nproc) BUILD_LOG=1 || ret=$? .github/workflows/scripts/show_build_failures.sh
 
       - name: Build Kernel
         shell: su buildbot -c "sh -e {0}"
         working-directory: openwrt
-        run: make target/compile -j$(nproc) BUILD_LOG=1
+        run: make target/compile -j$(nproc) BUILD_LOG=1 || ret=$? .github/workflows/scripts/show_build_failures.sh
 
       - name: Build Kernel Kmods
         shell: su buildbot -c "sh -e {0}"
         working-directory: openwrt
-        run: make package/linux/compile -j$(nproc) BUILD_LOG=1
+        run: make package/linux/compile -j$(nproc) BUILD_LOG=1 || ret=$? .github/workflows/scripts/show_build_failures.sh
 
       - name: Upload logs
         if: failure()
diff --git a/.github/workflows/scripts/show_build_failures.sh b/.github/workflows/scripts/show_build_failures.sh
new file mode 100755
index 0000000000..14f699c93d
--- /dev/null
+++ b/.github/workflows/scripts/show_build_failures.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+original_exit_code="${ret:-1}"
+log_dir_path="${1:-logs}"
+context="${2:-10}"
+
+show_make_build_errors() {
+	grep -slr 'make\[[[:digit:]]\].*Error [[:digit:]]$' "$log_dir_path" | while IFS= read -r log_file; do
+		printf "====== Make errors from %s ======\n" "$log_file";
+		grep -r -C"$context" 'make\[[[:digit:]]\].*Error [[:digit:]]$' "$log_file" ;
+	done
+}
+
+show_make_build_errors
+exit "$original_exit_code"
diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml
index 4e423fdd62..b97f0599e2 100644
--- a/.github/workflows/tools.yml
+++ b/.github/workflows/tools.yml
@@ -123,7 +123,7 @@ jobs:
       - name: Build tools
         run: |
           cd "$WORKPATH"
-          make tools/install -j$(nproc) BUILD_LOG=1
+          make tools/install -j$(nproc) BUILD_LOG=1 || ret=$? .github/workflows/scripts/show_build_failures.sh
 
       - name: Move logs to GITHUB_WORKSPACE
         if: always()




More information about the lede-commits mailing list