Skip to content

[fix/update]解决git action的windows测试错误,优化跨平台测试 #9

[fix/update]解决git action的windows测试错误,优化跨平台测试

[fix/update]解决git action的windows测试错误,优化跨平台测试 #9

Workflow file for this run

name: Build
on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
jobs:
build-gcc:
name: Build with ARM GCC
runs-on: ubuntu-latest
strategy:
matrix:
config:
- name: "Default (All OFF)"
freertos: "OFF"
lvgl: "OFF"
thorvg: "OFF"
- name: "FreeRTOS ON"
freertos: "ON"
lvgl: "OFF"
thorvg: "OFF"
- name: "LVGL ON"
freertos: "OFF"
lvgl: "ON"
thorvg: "OFF"
- name: "LVGL + ThorVG ON"
freertos: "OFF"
lvgl: "ON"
thorvg: "ON"
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
lfs: true
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y ninja-build
- name: Install ARM GCC Toolchain
run: |
sudo apt-get install -y gcc-arm-none-eabi
- name: Verify toolchain installation
run: |
arm-none-eabi-gcc --version
ninja --version
cmake --version
- name: Build with GCC - ${{ matrix.config.name }}
run: |
cmake -B build -G Ninja \
-DCMAKE_TOOLCHAIN_FILE="cmake/gcc-arm-none-eabi.cmake" \
-DCMAKE_BUILD_TYPE=Debug \
-DLINKER_SCRIPT="L1_MCU/STM32F429ZIT6_GCC/STM32F429XX_FLASH.ld" \
-DMCU_MODEL="STM32F429ZIT6_GCC" \
-DUSE_FREERTOS=${{ matrix.config.freertos }} \
-DUSE_FATFS=OFF \
-DUSE_LVGL=${{ matrix.config.lvgl }} \
-DUSE_LVGL_THORVG=${{ matrix.config.thorvg }}
ninja -C build
build-gcc-windows:
name: Build with ARM GCC (Windows)
runs-on: windows-latest
strategy:
matrix:
config:
- name: "Default (All OFF)"
freertos: "OFF"
lvgl: "OFF"
thorvg: "OFF"
- name: "FreeRTOS ON"
freertos: "ON"
lvgl: "OFF"
thorvg: "OFF"
- name: "LVGL ON"
freertos: "OFF"
lvgl: "ON"
thorvg: "OFF"
- name: "LVGL + ThorVG ON"
freertos: "OFF"
lvgl: "ON"
thorvg: "ON"
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
lfs: true
- name: Install ARM GCC Toolchain
shell: pwsh
run: |
scoop install gcc-arm-none-eabi
- name: Verify toolchain installation
shell: pwsh
run: |
arm-none-eabi-gcc --version
ninja --version
cmake --version
- name: Build with GCC - ${{ matrix.config.name }}
shell: pwsh
run: |
cmake -B build -G Ninja `
-DCMAKE_TOOLCHAIN_FILE="cmake/gcc-arm-none-eabi.cmake" `
-DCMAKE_BUILD_TYPE=Debug `
-DLINKER_SCRIPT="L1_MCU/STM32F429ZIT6_GCC/STM32F429XX_FLASH.ld" `
-DMCU_MODEL="STM32F429ZIT6_GCC" `
-DUSE_FREERTOS=${{ matrix.config.freertos }} `
-DUSE_FATFS=OFF `
-DUSE_LVGL=${{ matrix.config.lvgl }} `
-DUSE_LVGL_THORVG=${{ matrix.config.thorvg }}
ninja -C build
test:
name: Run Unit Tests
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
lfs: true
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y ninja-build gcc-multilib g++-multilib
- name: Verify tools installation
run: |
ninja --version
cmake --version
gcc --version
- name: Run tests
run: |
cd Test
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_C_FLAGS="-m32" \
-DCMAKE_CXX_FLAGS="-m32"
cmake --build build --config Debug
# 诊断:列出 build 目录内容
echo "=== Build directory structure ==="
ls -la build/
# 诊断:查找可执行文件
echo "=== Searching for executable ==="
EXE_PATH=$(find build \( -type f -executable -o -name "test" -o -name "test.exe" \) | head -1)
if [ -z "$EXE_PATH" ]; then
echo "Error: No executable found in build directory!"
exit 1
fi
echo "Found executable: $EXE_PATH"
"$EXE_PATH"
test-windows:
name: Run Unit Tests (Windows)
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
lfs: true
- name: Verify tools installation
shell: pwsh
run: |
ninja --version
cmake --version
- name: Run tests
shell: pwsh
run: |
cd Test
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug
cmake --build build --config Debug
# 诊断:列出 build 目录内容
Write-Host "=== Build directory contents ==="
Get-ChildItem build -Recurse | Select-Object FullName | ForEach-Object { $_.FullName }
# 诊断:查找可执行文件
Write-Host "=== Searching for executable ==="
$exePath = Get-ChildItem build -Recurse -Filter "*.exe" | Select-Object -First 1
if (-not $exePath) {
Write-Error "No .exe file found in build directory!"
exit 1
}
Write-Host "Found executable: $($exePath.FullName)"
& $exePath.FullName