Skip to main content

Continuous Integration for Embedded Hardware

Project description

BenchCI

Documentation PyPI Early Access Hardware CI Embedded License

Continuous Integration for Embedded Hardware

Flash firmware, run automated tests on real devices, and validate embedded systems in CI โ€” using simple YAML configs.


๐Ÿš€ Quickstart (30 seconds)

pip install benchci
benchci login
benchci run -b bench.yaml -s suite.yaml -a build/fw.elf

๐Ÿ‘‰ Thatโ€™s it โ€” BenchCI will:

  • flash firmware
  • execute tests on real hardware
  • validate behavior
  • generate structured artifacts

โšก Why BenchCI?

Testing embedded firmware usually looks like this:

  • flash firmware manually
  • open serial terminal
  • send commands
  • watch logs
  • write ad-hoc scripts
  • repeat for every release

๐Ÿ‘‰ This is manual, fragile, and not CI-friendly


BenchCI makes hardware testing:

  • โœ… declarative
  • โœ… repeatable
  • โœ… CI-ready
  • โœ… scalable across teams

๐Ÿง  Mental Model

BenchCI separates hardware and test logic:

  • bench.yaml โ†’ your hardware setup
  • suite.yaml โ†’ your tests
bench.yaml + suite.yaml
        โ†“
   benchci run
        โ†“
   real hardware execution
        โ†“
   results + logs

๐Ÿ—๏ธ How It Works

CI Pipeline / Developer
        โ”‚
        โ–ผ
   benchci run
        โ”‚
        โ–ผ
   BenchCI Agent
        โ”‚
        โ–ผ
   Real Hardware Bench
        โ”‚
        โ–ผ
   DUT / PLC / ECU

BenchCI separates:

  • execution (CLI / CI)
  • hardware access (Agent)

This enables:

  • remote labs
  • shared benches
  • scalable hardware testing

๐Ÿง  What BenchCI Does

BenchCI connects your CI pipeline directly to real hardware and allows you to:

  • flash firmware automatically (OpenOCD, CubeProgrammer, J-Link, esptool)
  • interact with devices over UART, Modbus RTU/TCP, and CAN
  • control and monitor GPIO (local or remote)
  • validate behavior with structured test steps
  • run tests on remote hardware via Agent
  • generate reproducible artifacts

๐Ÿ“„ Configuration Model

BenchCI uses two files:

bench.yaml

Defines your hardware:

  • nodes (DUT, controllers, PLCs, etc.)
  • transports (UART, Modbus, CAN)
  • flashing configuration
  • GPIO control

suite.yaml

Defines your tests:

  • test cases
  • step-by-step actions
  • expected behavior

๐Ÿš€ Example

suite.yaml

version: "1"

suite:
  name: "firmware-tests"

tests:
  - name: boot_ok
    steps:
      - expect_uart:
          node: dut
          transport: console
          contains: "[BOOT] OK"
          within_ms: 3000

  - name: ping
    steps:
      - send_uart:
          node: dut
          transport: console
          data: "PING\n"
      - expect_uart:
          node: dut
          transport: console
          contains: "PONG"
          within_ms: 1000

Run:

benchci run -b bench.yaml -s suite.yaml -a build/fw.elf

๐Ÿ”Œ Supported Interfaces

Communication

  • UART
  • Modbus RTU
  • Modbus TCP
  • CAN

Hardware Control

  • Linux GPIO
  • Remote GPIO (via Agent)
  • Mock GPIO

Flashing Backends

  • OpenOCD
  • STM32CubeProgrammer
  • SEGGER J-Link
  • esptool (ESP32)

๐Ÿงช Example Scenarios

examples/
โ”œโ”€โ”€ device_boot_validation/
โ”œโ”€โ”€ local_gpio_reset_and_ready/
โ”œโ”€โ”€ remote_gpio_power_cycle/
โ”œโ”€โ”€ modbus_rtu_plc_validation/
โ”œโ”€โ”€ modbus_tcp_gateway_validation/
โ”œโ”€โ”€ can_ecu_handshake/
โ”œโ”€โ”€ multi_node_system_smoke/

๐Ÿ“ฆ Output Artifacts

BenchCI generates structured outputs:

benchci-results/
โ””โ”€โ”€ <timestamp>/
    โ”œโ”€โ”€ results.json
    โ””โ”€โ”€ nodes/
        โ””โ”€โ”€ dut/
            โ”œโ”€โ”€ flash.log
            โ”œโ”€โ”€ gpio.log
            โ””โ”€โ”€ transport-console.log

Perfect for:

  • CI pipelines
  • debugging
  • traceability

๐Ÿงฐ CLI Workflow

  • benchci doctor โ†’ check environment
  • benchci validate โ†’ validate configs
  • benchci login โ†’ authenticate
  • benchci run โ†’ execute tests

๐Ÿ”„ CI Integration

BenchCI is designed for automation:

  • GitLab CI (example included)
  • GitHub Actions / Jenkins
  • remote execution via Agent

๐Ÿ“š Documentation

๐Ÿ‘‰ https://docs.benchci.dev

Includes:

  • quickstart
  • installation
  • configuration guides
  • agent setup
  • CI integration

๐Ÿ“Œ Repository Contents

This repository contains:

  • documentation
  • configuration examples
  • CI examples
  • helper tools

BenchCI core source code is maintained in a private repository.


๐Ÿ’ผ License

BenchCI is a commercial product.

A valid license key is required to run commands.

For access:

๐Ÿ“ง tech@benchci.dev

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

benchci-0.2.2.tar.gz (67.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

benchci-0.2.2-py3-none-any.whl (80.1 kB view details)

Uploaded Python 3

File details

Details for the file benchci-0.2.2.tar.gz.

File metadata

  • Download URL: benchci-0.2.2.tar.gz
  • Upload date:
  • Size: 67.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for benchci-0.2.2.tar.gz
Algorithm Hash digest
SHA256 c9e199e0dec1c015aecd1a0dba67b4fd7fef03fa547b313345c8149204700668
MD5 d34f29806475b6f3c4ab1d851b12cef6
BLAKE2b-256 efe9a06516c668d22ad04275fb874ee2ec984b9f867f66ec7d1043749bc2ee7e

See more details on using hashes here.

File details

Details for the file benchci-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: benchci-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 80.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for benchci-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8c85173e30af4395c2b2ef939aa613a7669ad8a03295d01ce13ef56b1fc46f2f
MD5 d4127271605a3b83a08d764bb4c77ea7
BLAKE2b-256 4e093b05698d6579bf53e8a8367ed92e2111c31dc1a5d5ed78686516fc737232

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page