Integrated Retail Product Systems
Submitted By Jenkins User Eriks Zelenka
Bringing a legacy system up-to-speed with the help of Jenkins.
Organization: UK Retailer
Industry: Food & Retail
Programming Language: Python
Platform: Docker or Kubernetes, Linux
Version Control System: GitHub
Build Tool: Packer, Docker, PIP
Jenkins' rich plugin architecture supports
an enhanced CI/CD and development ease.
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.
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
- 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