Background: Software architect Gabriel Rosales, along with colleagues Neo Wu and Mort Zeng, work for a fintech company that is on a mission to help the best loyalty programs around the world thrive. How? By enabling their digital platforms to redeem points for products on their member’s favorite online stores. The company provides white-label solutions to a broad range of loyalty programs around the world.
"Our code base is the same for each white-label product, though each needs to be correctly configured before building the docker image and before being deployed to Kubernetes," said Gabriel. "Manually configuring each white-label product would be time-consuming and error-prone, so we needed a way to do it right and fast."
Goals: From a "big picture" perspective, we were mostly looking to empower our business development team.
"Everything works out of the box. Configuration-as-Code support made the difference as we could easily configure, maintain & deploy the same Jenkins solution through different k8s clusters."
Solution & Results: We started to test out different CI/CD alternatives, as we needed to find one that gave us enough customization and features within our allowed cost allocation.
After our testing, we decided to get our hands on Jenkins and set up the appropriate pipelines to achieve the following:
Increase our overall product quality by running automated testing for each commit. (If someone breaks the build we get notified through Slack!)
Allow us to deploy as many times as we want (actually for every commit that gets green on our testing stage!)
Properly configure the required assets before building each white-label product.
Automatically build the appropriate docker image.
Automatically deploy the finished docker image to the appropriate k8s cluster.
For key capabilities, we used both Git and Slack integrations, Pipelines, the Configuration-as-Code plugin, and BlueOcean-- which has a very nice UI!
All in all, with Jenkins, we saw:
greatly reduced build times
fully automated deployment (no more human mistakes in the process)