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@true.cz>
This commit is contained in:
		
							
								
								
									
										8
									
								
								.github/workflows/kernel.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/kernel.yml
									
									
									
									
										vendored
									
									
								
							| @@ -150,22 +150,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() | ||||
|   | ||||
							
								
								
									
										15
									
								
								.github/workflows/scripts/show_build_failures.sh
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										15
									
								
								.github/workflows/scripts/show_build_failures.sh
									
									
									
									
										vendored
									
									
										Executable file
									
								
							| @@ -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" | ||||
							
								
								
									
										2
									
								
								.github/workflows/tools.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/tools.yml
									
									
									
									
										vendored
									
									
								
							| @@ -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() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Petr Štetiar
					Petr Štetiar