Jenkins is the way to run the custom automation your project needs

Integrated Retail Product Systems

Submitted By Jenkins User Eriks Zelenka
Bringing a legacy system up-to-speed with the help of Jenkins.
Logo
Organization: UK Retailer
Industries: Food & Retail
Programming Languages: Python
Platform: : Docker or Kubernetes, Linux
Version Control System: GitHub
Build Tools: 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.

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.
profile picture
Eriks Zelenka, Senior Devops Engineer, Floeberg Ltd

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