Background: Tasked with creating software that provides unified visibility across entire ecosystems, the technology division of an open-source community knew they needed to develop a common platform for all projects, including logs, metrics, and APM data. That, coupled with the need to support different operating systems, programming languages and architectures proved quite challenging for this team.
Goals: To standardize pipelines across all projects.
Solution & Results: First, we created a system that provided the ability to grab log metrics and APM data from user applications and environments at runtime, store it in our search database, and provide the ability to analyze that data with Kibana and ML. By standardizing the pipeline, we created a shared library that allows us to reuse common code across all of our projects. What's great about this is that other software teams are reusing this development for their projects as well.
To tackle our second challenge – different architectures – we used Jenkins. Because it supports any architecture with Java 8 support, it was easy to add Linux/Windows Agents in Google Cloud, Mac Agents on MacStadium, and ARMv8 Agents. Now we can test on four architectures and more than 20 different OS versions and types, with more to come in the future.
Jenkins rocks because now we just build and test it. No hands! Simply push to GitHub and everything is magic.
The key capabilities we relied on Jenkins for were:
Jenkins rocks because now we just build and test it. No hands! Simply push to GitHub and everything is magic. We also liked the results that it provides: