Background: We had to implement a third-party insurance app suite, Guidewire, for a Canadian client. We were responsible for data migration, on-prem to the cloud, setting up the application in a cloud environment, and customizing the application for the Canadian market.
Goals: Bringing a client from on-premise to cloud with the best cloud-ready insurance suite tooling.
Solution & Results: We needed to test and redeploy changes to both a front-end full-stack application suite alongside a back-end application suite multiple times. Part of this was also two sets of microservices (12 in total!) My role as DevOps was to ensure that builds would be kicked off automatically seamlessly.
We also had multiple environments, multiple sets of development (DEV1, DEV2, QA, UAT, PROD, etc!). So sometimes we only wanted to redeploy one microservice to a very specific set, and this had to be pain-free for developers, myself (DevOps), and functional business folks (non-technical) alike!
Jenkins helped me tackle a monolithic job and make clones of myself via automation! wherever and whenever I needed it!
Through the use of parameterizing plugins and pipeline cloning (and some admin privilege tweaking), I was able to create multiple pipeline jobs to seamlessly allow all of this to happen. Some were hidden, some ran periodically, some were helpers just for myself. Did I mention we had two development teams spanning three continents? I was the only DevOps too, so ensuring this stuff worked flawlessly and seamlessly (even when I was asleep) was critical!
The key capabilities we relied on were varied. The most important tools included custom jobs, permissions and privileges, scheduled job times, making workspaces on virtual machines available, and email alerts.
The results are typical of many other Jenkins installations: