name: Build Matrix on: push: branches: [ main ] paths: - 'src/**' - 'hardware/**' - 'soc/**' - 'platformio.ini' - '.gitea/workflows/build-matrix.yml' pull_request: branches: [ main ] jobs: build-matrix: name: Build runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: # ESP32-S3 targets (Heltec V3, Seeed Xiao S3) - target: heltec_v3 description: "Heltec WiFi LoRa 32 V3 (ESP32-S3, SX1262)" chip: esp32s3 - target: seeed_xiao_s3_wio_sx1262 description: "Seeed XIAO ESP32-S3 + Wio SX1262" chip: esp32s3 # ESP32 targets (Heltec v2, LilyGo T-Beam variants) - target: heltec_v2 description: "Heltec WiFi LoRa 32 V2 (ESP32, SX1276)" chip: esp32 - target: lilygo_t_beam_1w description: "LilyGo T-Beam 1W (ESP32, SX1262)" chip: esp32 - target: lilygo_t_beam_sx1262 description: "LilyGo T-Beam SX1262 (ESP32, SX1262)" chip: esp32 - target: lilygo_t_beam_sx1276 description: "LilyGo T-Beam SX1276 (ESP32, SX1276)" chip: esp32 - target: lilygo_t_beam_supreme description: "LilyGo T-Beam Supreme (ESP32-S3, SX1262)" chip: esp32s3 # nRF52 targets (RAK Wireless) - target: rak_rak4631 description: "RAK4631 WisBlock (nRF52840, SX1262)" chip: nrf52 - target: rak_rak3112 description: "RAK3112 (nRF52840, SX1262)" chip: nrf52 - target: rak_rak3401 description: "RAK3401 (nRF52840, SX1262)" chip: nrf52 - target: rak_rak3x72 description: "RAK3x72 (nRF52840, SX1262)" chip: nrf52 - target: rak_rak11310 description: "RAK11310 (RP2040, SX1262)" chip: rp2040 # Additional Heltec variants - target: heltec_v4 description: "Heltec WiFi LoRa 32 V4 (ESP32-S3, SX1262)" chip: esp32s3 - target: heltec_t114 description: "Heltec T114 (ESP32-S3, SX1262)" chip: esp32s3 - target: heltec_ct62 description: "Heltec CT62 (ESP32, SX1262)" chip: esp32 - target: heltec_e213 description: "Heltec E213 (ESP32, SX1262)" chip: esp32 - target: heltec_e290 description: "Heltec E290 (ESP32, SX1262)" chip: esp32 - target: heltec_mesh_solar description: "Heltec Mesh Solar (ESP32, SX1262)" chip: esp32 - target: heltec_t190 description: "Heltec T190 (ESP32, SX1262)" chip: esp32 - target: heltec_tracker description: "Heltec Tracker (ESP32-S3, SX1262)" chip: esp32s3 - target: heltec_tracker_v2 description: "Heltec Tracker V2 (ESP32-S3, SX1262)" chip: esp32s3 steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.11' - name: Cache PlatformIO uses: actions/cache@v3 with: path: ~/.platformio key: ${{ runner.os }}-platformio-${{ matrix.chip }}-${{ hashFiles('**/platformio.ini') }} restore-keys: | ${{ runner.os }}-platformio- - name: Install PlatformIO run: pip install platformio - name: Build ${{ matrix.target }} run: | echo "Building: ${{ matrix.description }}" pio run -e ${{ matrix.target }} - name: Report if: always() run: | echo "✅ Build completed for ${{ matrix.target }}"