Files
lorakiss/CI_CD.md
Maze X f7bd449e6f
Some checks failed
Build Matrix / Build (esp32, Heltec CT62 (ESP32, SX1262), heltec_ct62) (push) Failing after 1m26s
Build Matrix / Build (esp32, Heltec E213 (ESP32, SX1262), heltec_e213) (push) Failing after 10s
Build Matrix / Build (esp32, Heltec E290 (ESP32, SX1262), heltec_e290) (push) Failing after 14s
Build Matrix / Build (esp32, Heltec Mesh Solar (ESP32, SX1262), heltec_mesh_solar) (push) Failing after 10s
Build Matrix / Build (esp32, Heltec T190 (ESP32, SX1262), heltec_t190) (push) Failing after 11s
Build Matrix / Build (esp32, LilyGo T-Beam 1W (ESP32, SX1262), lilygo_t_beam_1w) (push) Has been cancelled
Build Matrix / Build (esp32, LilyGo T-Beam SX1262 (ESP32, SX1262), lilygo_t_beam_sx1262) (push) Has been cancelled
Build Matrix / Build (esp32, LilyGo T-Beam SX1276 (ESP32, SX1276), lilygo_t_beam_sx1276) (push) Has been cancelled
Build Matrix / Build (esp32s3, Heltec T114 (ESP32-S3, SX1262), heltec_t114) (push) Has been cancelled
Build Matrix / Build (esp32s3, Heltec Tracker (ESP32-S3, SX1262), heltec_tracker) (push) Has been cancelled
Build Matrix / Build (esp32s3, Heltec Tracker V2 (ESP32-S3, SX1262), heltec_tracker_v2) (push) Has been cancelled
Build Matrix / Build (esp32s3, Heltec WiFi LoRa 32 V3 (ESP32-S3, SX1262), heltec_v3) (push) Has been cancelled
Build Matrix / Build (esp32s3, Heltec WiFi LoRa 32 V4 (ESP32-S3, SX1262), heltec_v4) (push) Has been cancelled
Build Matrix / Build (esp32s3, LilyGo T-Beam Supreme (ESP32-S3, SX1262), lilygo_t_beam_supreme) (push) Has been cancelled
Build Matrix / Build (esp32s3, Seeed XIAO ESP32-S3 + Wio SX1262, seeed_xiao_s3_wio_sx1262) (push) Has been cancelled
Build Matrix / Build (nrf52, RAK3112 (nRF52840, SX1262), rak_rak3112) (push) Has been cancelled
Build Matrix / Build (esp32, Heltec WiFi LoRa 32 V2 (ESP32, SX1276), heltec_v2) (push) Has been cancelled
Build Matrix / Build (nrf52, RAK3401 (nRF52840, SX1262), rak_rak3401) (push) Has been cancelled
Build Matrix / Build (nrf52, RAK3x72 (nRF52840, SX1262), rak_rak3x72) (push) Has been cancelled
Build Matrix / Build (nrf52, RAK4631 WisBlock (nRF52840, SX1262), rak_rak4631) (push) Has been cancelled
Build Matrix / Build (rp2040, RAK11310 (RP2040, SX1262), rak_rak11310) (push) Has been cancelled
CI/CD / Lint and Format Check (push) Successful in 28s
CI/CD / Build heltec_ct62 (push) Failing after 11s
CI/CD / Build heltec_e213 (push) Failing after 9s
CI/CD / Build heltec_e290 (push) Failing after 9s
CI/CD / Build heltec_mesh_solar (push) Failing after 9s
CI/CD / Build heltec_t114 (push) Failing after 9s
CI/CD / Build heltec_t190 (push) Failing after 9s
CI/CD / Build heltec_tracker (push) Failing after 8s
CI/CD / Build heltec_tracker_v2 (push) Failing after 9s
CI/CD / Build lilygo_t_beam_supreme (push) Has been cancelled
CI/CD / Build lilygo_t_beam_sx1262 (push) Has been cancelled
CI/CD / Build lilygo_t_beam_sx1276 (push) Has been cancelled
CI/CD / Build rak_rak11310 (push) Has been cancelled
CI/CD / Build heltec_v2 (push) Has been cancelled
CI/CD / Build Summary (push) Has been cancelled
CI/CD / Build heltec_v3 (push) Has been cancelled
CI/CD / Build heltec_v4 (push) Has been cancelled
CI/CD / Build lilygo_t_beam_1w (push) Has been cancelled
CI/CD / Build rak_rak3112 (push) Has been cancelled
CI/CD / Build rak_rak3401 (push) Has been cancelled
CI/CD / Build rak_rak3x72 (push) Has been cancelled
CI/CD / Build rak_rak4631 (push) Has been cancelled
CI/CD / Build seeed_xiao_s3_wio_sx1262 (push) Has been cancelled
CI/CD / Unit Tests (push) Has been cancelled
Add Gitea Actions CI/CD infrastructure with build matrix
- Main CI pipeline (.gitea/workflows/ci.yml): Runs linting, builds all 21 targets, executes unit tests, and reports overall status
- Detailed build matrix (.gitea/workflows/build-matrix.yml): Per-target build configuration with descriptions and chip architecture metadata; parallel builds with SoC-specific caching
- CI_CD.md documentation: Comprehensive guide covering workflow descriptions, all 21 hardware targets, local testing commands, cache strategy, and troubleshooting

All 21 supported boards now build in CI:
- Heltec: v2, v3, v4, T114, CT62, E213, E290, Mesh Solar, T190, Tracker, Tracker V2
- LilyGo: T-Beam 1W, Supreme, SX1262, SX1276
- RAK: RAK4631, RAK3112, RAK3401, RAK3x72, RAK11310
- Seeed: XIAO S3 + Wio SX1262

Verified: Seeed and Heltec V3 targets build successfully with all chip-specific configurations.
2026-03-27 17:53:08 +01:00

4.9 KiB

CI/CD Pipeline

This project uses Gitea Actions for continuous integration and continuous deployment.

Workflows

1. Main CI Pipeline (ci.yml)

Runs on every push to main and pull requests. Includes:

  • Lint Check — Validates code formatting with pre-commit (clang-format, markdownlint, etc.)
  • Build Matrix — Compiles all 21 hardware targets
  • Unit Tests — Runs integration test suite (when available)
  • Summary — Reports overall status

Status: All builds must pass before merging to main

2. Detailed Build Matrix (build-matrix.yml)

Comprehensive build configuration with per-target metadata:

  • Target name and description
  • Chip architecture (ESP32, ESP32-S3, nRF52, RP2040)
  • Parallel builds with caching
  • Detailed reporting

Builds:

  • ESP32 targets (7): Heltec v2, v4, CT62, E213, E290, Mesh Solar, T190 + LilyGo T-Beam variants
  • ESP32-S3 targets (7): Heltec V3, T114, Tracker, Tracker V2 + Seeed Xiao S3 + LilyGo T-Beam Supreme
  • nRF52 targets (4): RAK4631, RAK3112, RAK3401, RAK3x72
  • RP2040 targets (1): RAK11310

Hardware Targets Supported

Board Vendor SoC LoRa Chip Status
Heltec WiFi LoRa 32 V2 Heltec ESP32 SX1276
Heltec WiFi LoRa 32 V3 Heltec ESP32-S3 SX1262 Verified
Heltec WiFi LoRa 32 V4 Heltec ESP32-S3 SX1262
Heltec CT62 Heltec ESP32 SX1262
Heltec E213 Heltec ESP32 SX1262
Heltec E290 Heltec ESP32 SX1262
Heltec Mesh Solar Heltec ESP32 SX1262
Heltec T114 Heltec ESP32-S3 SX1262
Heltec T190 Heltec ESP32 SX1262
Heltec Tracker Heltec ESP32-S3 SX1262
Heltec Tracker V2 Heltec ESP32-S3 SX1262
LilyGo T-Beam 1W LilyGo ESP32 SX1262
LilyGo T-Beam SX1262 LilyGo ESP32 SX1262
LilyGo T-Beam SX1276 LilyGo ESP32 SX1276
LilyGo T-Beam Supreme LilyGo ESP32-S3 SX1262
RAK4631 WisBlock RAK nRF52840 SX1262
RAK3112 RAK nRF52840 SX1262
RAK3401 RAK nRF52840 SX1262
RAK3x72 RAK nRF52840 SX1262
RAK11310 RAK RP2040 SX1262
Seeed XIAO ESP32-S3 + Wio SX1262 Seeed ESP32-S3 SX1262 Verified

Local Testing

Build a single target

pio run -e heltec_v3

Run linting

pre-commit run --all-files

Run unit tests

python3 test/test_integration.py

CI/CD Configuration Files

  • .gitea/workflows/ci.yml — Main CI pipeline
  • .gitea/workflows/build-matrix.yml — Detailed build matrix with per-target metadata
  • .pre-commit-config.yaml — Pre-commit hooks (clang-format, markdownlint, etc.)
  • .clang-format — Code formatting rules (LLVM style, 88-char lines)
  • .clang-tidy — Static analysis rules (C++ naming, magic numbers, etc.)
  • platformio.ini — Build configuration for all targets

Caching

PlatformIO dependencies are cached per SoC architecture:

  • esp32, esp32s3 — Share cache
  • nrf52 — Separate cache
  • rp2040 — Separate cache

Cache is keyed by platformio.ini to invalidate on dependency changes.

Build Status Badge

Add to README.md:

[![Build Status](https://gitea.example.com/path/to/loramodem/badges/build.svg)](https://gitea.example.com/path/to/loramodem/actions)

Troubleshooting

Build fails for all targets

  1. Check platformio.ini syntax: pio run -e heltec_v3 -vv
  2. Clear cache: rm -rf ~/.platformio
  3. Check pre-commit: pre-commit run --all-files

Build fails for specific target

  1. Check board configuration: hardware/<vendor>/<board>/platformio.ini
  2. Verify pin definitions
  3. Check SoC configuration: soc/<soc>/platformio.ini

Tests fail in CI but pass locally

  1. Check Python version: CI uses 3.11, ensure local is compatible
  2. Check environment: CI runs on Ubuntu, may differ from macOS/Windows
  3. Run tests with verbose: pytest -vv test/

Next Steps

  • Hardware flashing job (needs USB device access)
  • Integration tests with modem simulator
  • Firmware size reports per target
  • Documentation generation
  • Release artifact creation