Background: For this retail giant, the main challenge was limited CI/CD options available for the project and the complexity and diversity of tasks that would need to be automated.
Goal: Integrate old and new product management systems.
"Jenkins allowed us to achieve all our goals and satisfy all our needs. Its rich plugin ecosystem provides flexibility to run, schedule, and visualize any complex automation."
Solution & Results:
The flexibility offered by Jenkins allowed us to create custom pipelines for all of our needs in the project, from building a Python application as a Docker image to the automation of the Kubernetes clusters creation, deletion, and updates.
We leveraged Jenkins' ability to run jobs in Kubernetes clusters dynamically and used Kubernetes secrets as credentials for Jenkins jobs. JCasC allowed us to declaratively source both of the pipelines and configure plugins and other aspects of the Jenkins deployments.
As we used Flux CD, we automated Jenkins upgrades to keep it updated automatically. There were challenges with the approach of making changes in the plugin ecosystem, but it was fairly easy to resolve.
The key capabilities we relied on were:
Pipelines running in Kubernetes pods
Kubernetes secrets used as Jenkins credentials
JCasC
Scripted Jenkinsfile as pipeline definitions
Parallel run of some tasks
OSS helm chart to deploy and manage Jenkins in Flux GitOps setup
Ability to self-host CI/CD automation tool
Jenkins helped us:
Run very diverse tasks
Simplify configuration and updates via IaC and GitOps
Experience faster delivery by sharing code between multiple teams thanks to Jenkins JCasC and IaC