Jenkins is the way to make electric vehicle charging possible through cloud

Charging Management System (CMS) for Electric Vehicles

Submitted By Jenkins User Avinash Upadhyaya
Numocity can’t slow down when it comes to supporting easy charging of electric vehicles and easy management for charging stations, so they welcomed when bi-weekly release cycles were reduced to daily.
Organization: Numocity Technologies, https://www.numocity.com
Industries: Electric Mobility
Programming Languages: Java, Node.js
Version Control Systems: Bitbucket Server
Community Support: Jenkins Users Google Group or IRC Chat, Jenkins.io websites & blogs

eMobility comes with faster deployment and easier management for the developers

Background: Numocity is all about accelerating eMobility with an 'Energy as a Service' point of view. The company is a cloud-based, modular, multivendor, cross-platform middleware, and intelligent orchestrator acting as a digital SaaS platform for energy delivery to electric vehicles. The company’s product had an Angular frontend and a lot of microservices written in NodeJS and one microservice in Java. We also had an Android application as well. The primary challenge was to have a single pipeline that would build and deploy all the microservices fast and reliably without too much configuration from the developers using it.

Goals: Creating a platform for easy charging of electric vehicles and easy management for charging stations.

"The UI-based scripted pipeline was the best part along with RBAC for our teams. The community plugins available for Jenkins helped us in our journey."
image— Avinash Upadhyaya, DevOps Engineer, Hashedin by Deloitte

Solution & Results:  We wrote a Jenkins pipeline in Groovy that would clone the repository securely and run the unit tests before building the artifacts based on the microservice and containerize the application. 

The pipeline also included an easy integration of a static code analyzer and had a manual trigger if the static code analyzer failed and the build was important. The container image created will be pushed to a repository securely and then deployed using Ansible onto the respective environments. There were checks for the microservice and depending on the microservice, certain actions were taken like Maven build for Java and npm build for NodeJS. 

The second pipeline was the most interesting use case of Jenkins for us. It would build the Android application in a Docker environment and push the apk to a self-developed registry. The Docker environment would then be torn down once the job is completed and brought up once again when the job is run. This helped to keep the Jenkins environment light and easy to change Android SDKs whenever necessary.

The key capabilities we relied on were varied. The docker runtime environment was used for the Android build to keep it light and flexible. The plugin for docker authentication made it easy to securely log into our self-hosted docker registry. The Blue Ocean UI plugin made it simple for our testing and management teams to use Jenkins and deploy to their respective environments. Jenkins credentials are also great features for a secure pipeline. Of course, the Role-based Authorization Strategy plugin allowed us to implement Role-Based Access Control(RBAC) for our teams and hence reducing the workload for the DevOps team.

The results included:

  • Faster deployment with easy management for the developers 

  • The same pipeline could be used for multiple environments like dev, test, and prod 

  • The respective team could trigger their deployments with RBAC without the DevOps team having to interfere 

  • Release cycles shortened from 2 weeks to every day

    +
    +