From 7ab5d53352df51de97e84a8fcc6db95acaffe714 Mon Sep 17 00:00:00 2001 From: torlando-tech Date: Wed, 29 Oct 2025 10:34:39 -0400 Subject: [PATCH] ci: add Raspberry Pi OS ARM testing (32-bit and 64-bit) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add QEMU-based ARM testing for both armhf (32-bit) and arm64 (64-bit) architectures to validate installer on Raspberry Pi OS Lite. Tests run only on PRs to main branch to conserve CI resources while ensuring compatibility with ARM platforms before merge. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .github/workflows/test.yml | 60 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e48b4b6..cf89da9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -164,3 +164,63 @@ jobs: echo "✓ Pip packages: bleak, bluezero" >> $GITHUB_STEP_SUMMARY echo "✓ Install method: System packages (no compilation)" >> $GITHUB_STEP_SUMMARY echo "✓ Installation time: < 1 minute" >> $GITHUB_STEP_SUMMARY + + installer-test-arm: + name: Installer Test (Raspberry Pi OS - ARM) + runs-on: ubuntu-latest + # Only run on pull requests to main branch + if: github.event_name == 'pull_request' && github.base_ref == 'main' + timeout-minutes: 20 # ARM emulation is slower, allow extra time + + strategy: + fail-fast: false + matrix: + include: + # Raspberry Pi OS 32-bit (armhf/armv7) + # Based on Debian Bookworm - matches Raspberry Pi OS Lite 32-bit + - os-image: "arm32v7/debian:bookworm" + platform: "linux/arm/v7" + arch-name: "Raspberry Pi OS 32-bit (armhf)" + + # Raspberry Pi OS 64-bit (arm64/aarch64) + # Based on Debian Bookworm - matches Raspberry Pi OS Lite 64-bit + - os-image: "arm64v8/debian:bookworm" + platform: "linux/arm64" + arch-name: "Raspberry Pi OS 64-bit (arm64)" + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + with: + platforms: arm,arm64 + + - name: Run installer test on ${{ matrix.arch-name }} + run: | + docker run --rm \ + --platform ${{ matrix.platform }} \ + -v $PWD:/workspace \ + -w /workspace \ + -e DEBIAN_FRONTEND=noninteractive \ + -e DEBCONF_NONINTERACTIVE_SEEN=true \ + -e TZ=UTC \ + ${{ matrix.os-image }} \ + bash tests/test_installer.sh + continue-on-error: false + + - name: Installation summary + if: always() + run: | + echo "## ARM Installer Test Results" >> $GITHUB_STEP_SUMMARY + echo "**Architecture:** ${{ matrix.arch-name }}" >> $GITHUB_STEP_SUMMARY + echo "**Platform:** ${{ matrix.platform }}" >> $GITHUB_STEP_SUMMARY + echo "**Base Image:** ${{ matrix.os-image }}" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "✓ System packages: python3-gi, python3-dbus, python3-cairo, bluez" >> $GITHUB_STEP_SUMMARY + echo "✓ Pip packages: bleak==1.1.1, bluezero" >> $GITHUB_STEP_SUMMARY + echo "✓ BLE interface files copied" >> $GITHUB_STEP_SUMMARY + echo "✓ BlueZ experimental mode configured" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "_Note: Tests run via QEMU emulation (2-5x slower than native)_" >> $GITHUB_STEP_SUMMARY