Continuous Middleware Process Deployment with Jenkins
Submitted By Jenkins User Nachiket Kulkarni
Global leader in enterprise data looks to deploy archived middleware applications in a Dockerized environment on dynamic multiple OS cloud and on-premise platforms.
Programming Language: Java, Python
Platform: Docker or Kubernetes, Linux, MacOS, Windows
Version Control System: GitHub, Subversion
Build Tool: Ant, Maven
Team: Manoj Kadam, QA Engineer, NICE Actimize
Community Support: Jenkins.io websites & blogs, Networking at Jenkins event, Spoke with colleagues and peers
Reducing the time it takes to get from unit to regression testing
from 3 days to 8 hours.
Background: Project was for a global leader in enterprise data, helping customers to connect, unify, and solve complex data-driven challenges in financial crime, risk, and compliance for regional and global financial institutions, as well as government regulators.
We required parallel and quick execution of long and memory-intensive automation tests on multiple OS platforms. Some applications were inherently data and memory-heavy. The tests sets on these applications were large in quantity and required parallel execution, not on just one OS but on clean and multiple OS platforms to make sure that certification is achieved across all platforms with an acceptable pass threshold percentage achieved.
Goals: Deploying archived middleware applications in a dockerized environment on dynamic multiple OS cloud and on-premise platforms. Followed by running automation tests, storing, and publishing results for further visualization.
Solution & Results: Our solution, capabilities used and results are as follows:
Solutions achieved via these steps:
- Leveraged the Jenkins EC2 plugin and created AMIs of the required platforms using AWS and configured them on Jenkins.
- Parallel launched EC2 nodes for each OS platform and ran Java, Ant, and Maven-based unit and automation tests across all platforms.
- These nodes were dynamic, hence destroyed after use. This presented an opportunity to save costs.
- Leveraged the Jenkins Docker plugin and Docker on nodes to run pipelines in a clean dockerized environment. Stability tests lasting up to 72 hours were also run.
- Published all test results via Jenkins to Grafana and our in-house analytics tool for visualization.
Jenkins Capabilities utilized:
- Jenkins EC2 Plugin
- Docker plugin
- SCM (Git, Subversion)
- Extensible Email Plugin
- Project Matrix Access Control
- Groovy Sandbox
- Multi job plugin
- Test result analysis
- Blue Ocean plugin
- Replay capabilities
- Unit test reporting
These are the results we received:
- Unit test to regression testing time reduced from 3 days to 8 hours
- Reduced requirement of on-premise static nodes from 10+ to dynamic cloud Jenkins nodes
- Multi-OS certification achieved with 1 day compared to 5 days of manual effort