Background: Our services are developed with multi-tenancy in mind, meaning that a single instance of the software and its supporting infrastructure serves multiple users. Each user shares the software application and shares a single database, and each tenant's data is isolated and remains invisible to other tenants. More than anything, we needed to have a multi-tenant platform with a smooth CI/CD experience that would be easy to maintain and change. We also had to consider that many of our developers came from a Bamboo-based CI server experience used to automate release management.
Goals: More specifically, we needed an easy way to get Java-based services deployed on Kubernetes.
Solution & Results: LDAP (Lightweight Directory Access Protocol) integration allowed us to get groups from there and map those with Jenkins permissions. A common and shared continuous delivery pipeline then helped immensely by enabling teams to reuse most CI/CD logics and not write everything from scratch.
By using Jenkins and Groovy pipelines, we had the following experiences:
Jenkins offered minimal hassle to get everyone happy.