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.3.0.tar.gz (68.6 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.3.0-py3-none-any.whl (81.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for benchci-0.3.0.tar.gz
Algorithm Hash digest
SHA256 d3b047c04d1273ba548703f44a8d8832f184ee62170a42e311b459dc1eb15c32
MD5 c77026d12f8e7966b5a636462092e75d
BLAKE2b-256 300d1f997db33e0a91d173bbe230387c077c71d2c6e0051b23beabff3e695c4e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: benchci-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 81.4 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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e9b406b65f726c4273f22fd40329ebd0cd80609d55fcc036b3e58a7e29b29c26
MD5 0216b6fc093bedc1f39dd5897717bc1e
BLAKE2b-256 f52b6b9b2c6d9f248086cda2fa7d5a49c49b4236e3527ea81b5c02ca986eeb79

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