Skip to content

Add GitHub Actions CI matrix to catch toolchain regressions #41

Description

@mairas

Problem

ReactESP currently has no automated CI. The repo contains only a stub .travis.yml (entirely commented-out template). All toolchain coverage is implicit, performed manually by the maintainer against whatever PlatformIO environment is convenient.

This is the direct root cause of the 3.3.0 → C++14 regression fixed in #40:

  • Replace priority_queue with std::set for immediate timed event removal #38 introduced std::set::extract() / insert(node_type) in the hot path — a C++17 construct.
  • The change built cleanly on the maintainer's pioarduino setup (ESP-IDF 5.x, gnu++2a).
  • It silently broke espressif32 @ ^6.x (ESP-IDF 4.4.x, C++14), which is what SensESP and other downstreams build against.
  • No CI matrix existed to catch the divergence, so 3.3.0 shipped broken on a major downstream toolchain.

The C++14 fallback added in #40 restores compilation but is equally unguarded against the next perf change that accidentally reaches for a newer-standard feature.

Proposed scope

Add a GitHub Actions workflow that builds both examples/minimal and examples/torture_test across, at minimum:

  • Platforms: arduino (espressif32 ^6.x — exercises the C++14 fallback) and pioarduino (newer, exercises the C++17 hot path).
  • Boards: esp32 and esp32c3.

Trigger on PRs and pushes to master. Failure should block merge.

Out of scope

  • Unit/integration tests on real hardware. CI-time compile coverage is sufficient to catch the class of regression this issue is about; runtime testing is a larger separate effort.
  • Replacing .travis.yml. The stub can stay or be deleted in a follow-up; not blocking.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions