Jenkins, an open-source automation server, has become a cornerstone in the world of Continuous Integration and Continuous Deployment (CI/CD) for software development. With its Arm64 support, extensive plugin ecosystem, and flexible deployment options, it is a versatile and adaptable choice for development teams of all sizes, simplifying mixed-architecture builds and enhancing productivity.
Recently, we spoke to Bruno Verachten, a developer advocate and member of the Jenkins project, for an episode of Ampere Developer Impact. He talked about the history of the Jenkins project on the Arm 64 architecture – how the Jenkins project uses ARM servers for its own CI, the role of Ampere in Jenkins’s Arm64 support, and how to use Jenkins for Arm-native continuous integration.
Let's dive into what makes Jenkins so powerful and how it evolved to meet the needs of mixed architecture builds including Ampere platforms.
Ampere and Jenkins Support: Ahead of the Curve
Jenkins has been at the forefront of supporting the Arm64 architecture, a move that has proven advantageous as more cloud providers and organizations adopt Ampere based systems. Jenkins has offered full support for Arm64 build nodes since 2021 and a seamless operation because of Jenkins' Java-based core, allowing it to run wherever a Java Virtual Machine (JVM) is available. This includes important support for both Docker and Kubernetes environments supporting the cloud native software philosophy.
The transition to Arm64 was remarkably smooth for Jenkins, with the core working perfectly on ARM64 right out of the gate, as reported by Bruno Verachten.
CI/CD Powerhouse
At its core, Jenkins excels in automating the software development lifecycle:
1. Continuous Integration (CI): Jenkins monitors code repositories, triggering build processes whenever changes are detected. It compiles code, runs automated tests, and reports build status, ensuring rapid feedback for developers.
2. Continuous Deployment (CD): Jenkins automates the deployment process across various environments (staging, production, etc.) and platforms (cloud services, mobile devices). It orchestrates tasks such as packaging, server deployment, and post-deployment testing.
One of Jenkins' most powerful features is its "Pipeline as Code" functionality that eliminates the need for manual job creation and management. Using a Jenkinsfile, teams can define their entire build and deployment process as code. These features express user-defined CI pipelines which build test and deploy projects without operator intervention. These features allow Jenkins to discover, manage, and run jobs for multiple source repositories and branches across different target architectures with ease.
Extensive Integration Capabilities
Jenkins' flexibility shines through its vast plugin ecosystem with thousands of plugins available. These plugins facilitate integration with a wide array of tools and services, including:
This extensibility allows teams to create tailored CI/CD pipelines that fit their specific needs and technology stacks and allow for a robust mixed architecture build and deployment ecosystem.
Conclusion Whether you're managing a small project or orchestrating complex, multi-architecture deployments, Jenkins provides the automation backbone needed to streamline your software delivery process.
As cloud-native application development gains momentum, Jenkins is a crucial tool in facilitating the migration of traditional applications to cloud environments. Its robust CI/CD capabilities make it an invaluable tool for organizations looking to modernize their software delivery pipelines, and running those pipelines on Ampere platforms will provide ease of migration and opportunity for cost savings due to lower build and deployment costs.
Ampere Developer Center
Ampere Developer Community
Jenkins support for the Arm compute platform on Oracle Cloud Infrastructure
Jenkins User Documentation