Robotic Continuous Integration and Testing through Jenkins
Submitted By Jenkins User Alan Waite
The team at IAM Robotics used Jenkins to improve testing efficiency. This resulted in a deployment process that is 8 times faster and development release cycles shortened by 80%.
Organization: IAM Robotics, https://www.iamrobotics.com/
IAM Robotics Team: Tom Galluzzo / CEO and Founder; John Cameron / Chief Systems Engineer; Gary Giger / CIT Lead
Programming Language: C/C++, Python Platform: Robotic embedded hardware, Linux Version Control System: Bitbucket Server Build Tool: Make, CMake
Community Support: Spoke with Colleagues and peers, Used Jenkins.io websites & blogs
Testing improvements allow for aggressive development with fewer errors.
Background: IAM Robotics is a team of world-class engineers focused on delivering innovation and operational value that is transforming the material handling industry. Originally, we had cumbersome testing processes that required us to manually verify our code on the robotic hardware, which was slow and prone to errors. These manual processes included running existing unit tests, generating release packages, testing internal networks, and numerous regression tests. We needed to be able to streamline the processes to reduce errors and efficiently validate and test our code, both virtually and on robotic hardware. And we needed to reduce test time from hours to minutes.
Goals: Improving testing efficiency and reducing errors.
Solution & Results: By adopting Jenkins, we implemented an automated pipeline for building and validating our codebase. This allowed us to have release packages available for robots at the click of a button. It also eliminated the need for a developer to manually create release packages, which was a time consuming and error-prone process.
Instead of using a large server configuration, what makes our Jenkins instance unique is that we deploy this process across multiple pieces of robotic hardware. Jenkins accesses the robotic hardware directly to allow the build process to be fully automated without impacting the general operation of robots, simplifying and speeding up the deployment process. Jenkins easily integrates with other development tools we use to evaluate our code, and it helps to identify bugs and potential issues before they impact deployment.
Further, it automatically provides feedback to developers so they can quickly debug and improve the robustness of the codebase. Cumulatively, these improvements have allowed us to develop aggressively with fewer errors.
The capabilities we relied on most include Jenkins pipelines, Jenkins webhooks, Bitbucket webhooks, Cloudbees stable plugin manager, and Jenkins Node and Agent networking.
Overall, we’re thrilled with the results, including:
- a deployment process that is 8 times faster
- development release cycles shortened by 80%
- improved robot software quality
- happier developers