Skip to content

Commit

Permalink
CI: Validate all defconfig files before running any builds
Browse files Browse the repository at this point in the history
Currently, CI Build Jobs will validate the `defconfig` file just before compiling the NuttX Target (like `rv-virt:nsh`). This means that the Build Job might run for a while, before hitting a `defconfig` error and failing much later.

This PR updates the CI Workflow `build.yml` to validate all `defconfig` files before running any builds. This means that errors in the `defconfig` files will be flagged earlier. And the Build Job will terminate (with an error) before any build begins.

This behaviour is helpful for resolving CI Build Issues quickly. The code is derived from `[tools/testbuild.sh](http://tools/testbuild.sh)`. The enhancement was suggested here: apache#14259
  • Loading branch information
lupyuen committed Oct 15, 2024
1 parent d22ad37 commit c8dd8d5
Showing 1 changed file with 33 additions and 1 deletion.
34 changes: 33 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,38 @@ jobs:
export ARTIFACTDIR=`pwd`/buildartifacts
git config --global --add safe.directory /github/workspace/sources/nuttx
git config --global --add safe.directory /github/workspace/sources/apps
# Validate the defconfig files, in a clean temp unversioned folder
cp -r sources/nuttx sources/nuttx-validate
rm -rf sources/nuttx-validate/.git
pushd sources/nuttx-validate
testfile=tools/ci/testlist/${{matrix.boards}}.dat
echo Validating targets in $testfile
testlist=`grep -v -E "^(-|#)|^[C|c][M|m][A|a][K|k][E|e]" $testfile || true`
for line in $testlist; do
firstch=${line:0:1}
if [ "X$firstch" == "X/" ]; then
dir=`echo $line | cut -d',' -f1`
list=`find boards$dir -name defconfig | cut -d'/' -f4,6`
for config in ${list}; do
echo ./tools/refresh.sh --silent $config
if ! ./tools/refresh.sh --silent $config; then
echo Error: $config:1:1: error: $config is configured incorrectly. To fix it, run '"'tools/refresh.sh $config'"'
fail=1
fi
done
fi
done
popd
rm -rf sources/nuttx-validate
# Quit if the defconfig validation failed
if [[ "$fail" == "1" ]]; then
echo Error: $testfile:1:1: error: Quitting, defconfig validation failed for $testfile
exit 1
fi
# Build the targets
cd sources/nuttx/tools/ci
if [ "X${{matrix.boards}}" = "Xcodechecker" ]; then
./cibuild.sh -c -A -N -R --codechecker testlist/${{matrix.boards}}.dat
Expand Down Expand Up @@ -385,4 +417,4 @@ jobs:
with:
name: msvc-builds
path: buildartifacts/
continue-on-error: true
continue-on-error: true

0 comments on commit c8dd8d5

Please sign in to comment.