You are currently viewing What is BeetleboxCI? The embedded DevOps CI/CD platform

What is BeetleboxCI? The embedded DevOps CI/CD platform

The video version of this article

Are buggy devices causing development delays? Meet BeetleboxCI—the revolutionary devops platform that transforms your workflow by bridging software and hardware engineering. BeetleboxCI automates manual tests that once took a week to complete, reducing the time to just half a day. Whether you’re an embedded systems engineer or a software developer, BeetleboxCI boosts your productivity and efficiency.

Introduction to BeetleboxCI

BeetleboxCI is a robust platform for continuous integration, delivery, and testing, specifically crafted for software, firmware, embedded systems, and hardware engineering. Imagine BeetleboxCI as the conductor of an orchestra, harmonizing your tests into a flawless performance. From simple microcontrollers to complex systems, BeetleboxCI handles it all with ease.

You can get started for free here.

Pipelines: The Core of Devops Automation

Overview

On the Pipelines page, you can gain a comprehensive view of all automated flows within your organization. Seamlessly integrated with GitHub, Azure DevOps, and other providers, BeetleboxCI makes managing your projects effortless. Let’s explore a premade pipeline that runs through an automated process using an STM32 microcontroller.

Running New Tests

Suppose we want to run some new unit tests on our microcontroller. By exploring the workflows section, you can access a detailed history of executed processes, showcasing how BeetleboxCI guides your code from development to production efficiently and error-free. By automating these steps, BeetleboxCI saves valuable time, allowing teams to focus on innovation rather than manual tasks. You can filter workflows by branch and examine a feature branch with successful runs.

Jobs: Ensuring Reliable Results

On the workflow page, explore the jobs within our workflow. Each job runs in an isolated container, ensuring reliable and accurate results. Whether sequential or parallel, these tasks uphold the CI/CD pipeline’s integrity, delivering consistent outcomes every time. Each job performs a specific function within the CI/CD pipeline.

In our workflow, we have three jobs that run one after another:

  1. stm32-comp-job: Compiles the STM32 source code.
  2. stm32-program-job: Programs the STM32 device.
  3. run-tests-on-stm32-job: Executes tests on the device.

From the job page, you can see the steps that make up this job. Our Ping Device step checks our device’s response with a simple ping command. From the logs, we see that our device is responding with a pong.

Configuration: Customizing Your Pipeline

Adding a New Step

To add a new step that sends a command to run unit tests on our microcontroller, we navigate to the configuration editor to modify the config file controlling our pipeline.

  1. Add a ‘run’ step: The run keyword is used to tell BeetleboxCI, this step is to execute commands.
  2. Name the command: In this case, we give it the name run tests on device
  3. Define the Command: Declare a new command and name it, such as “Run unit tests on device.”
  4. Specify Execution on Device: Set on-device: True to run it on the device.
  5. Create a pass condition: BeetleboxCI can scan logs for certain keywords to know if the command has passed. In this case we use pass: "passed" to pass the test if “passed” is found in the log.
  6. Create a fail condition: Similarly, we can also setup fail conditions by using fail: "Unkown"

Before a job starts running, BeetleboxCI checks the device’s availability. Once available, it connects to and reserves the device, ensuring no other job can use it until the current job finishes. We send the command “rununits,” which BeetleboxCI executes, monitoring the output for success or failure.

Execution and Results

After saving this pipeline back to our Git repository, we rerun it to check for success. The logs confirm that our device successfully ran the unit tests. With just a few lines of configuration, BeetleboxCI facilitates seamless connections and command execution on external devices.

Device Management: Orchestrating Your Hardware

Effortlessly manage all your connected devices on the Devices page. BeetleboxCI supports any embedded device with serial, SSH, or other forms of connection. Our STM32 Nucleo here uses a serial connection.

Configuration File for Devices

Devices, like pipelines, are configured using a config file. Here’s a straightforward way to configure your device:

  1. Connect to Device: Provide the code needed to connect, using a special Python module in this case with the keyword connection.
  2. Send Commands: Specify the string that prompts a step to send its command to the device. In this case, the serial module always uses Ctrl+H --- to define when the nucleo device is connected, so we know to send our command then.

With these two simple steps, you can communicate with your device. You can also add more functionality, such as providing health checks for your device. While this demo covers a single device, the devices feature supports running thousands of tests across hundreds of connected devices, making it possible to test on a scale that cannot be achieved manually.

Conclusion

Ready to elevate your engineering projects? Sign up for free and experience the power of BeetleboxCI today. Transform your workflows and unlock unprecedented levels of efficiency and innovation.

More from BeetleboxCI

How to Get Started with CI/CD for AMD (Xilinx) FPGAs

Leave a Reply