Background: I work as a DevOps consultant for a large enterprise software development company. We have parallel development and deployment of different sprints of software development. For that, we needed to develop, deploy, and test across multiple environments in parallel, faster.
Goals: Automate the whole CI/CD pipeline to quickly deploy the application to different environments like DEV/SIT/UAT/PROD.
Solution & Results: We support a business-critical application that would be developed in sprints and needed to be available in UAT as soon as possible for users to test. In order to facilitate the deployment, we created separate branches for DEV/SIT/UAT in GitHub. We set up Jenkins in an EC2 instance in AWS and configured the pipeline to trigger the same pipeline for different branches.
Once the code is deployed in DEV and tested, the same image is then taken and deployed to SIT for integration testing in local environments. Once that is approved by the testing team, UAT deployment happens through Jenkins and is available to users immediately.
Jenkins helped us to deliver our software faster than before. We were able to provide a secure and safe software to our client.
The speed of UAT has really helped the whole team to work cohesively and provide the application to customers in very little time. This has increased team productivity as deploying the application after every change is easy and very smooth.
We are using the Jenkins pipeline for deploying our application into Docker containers. We are using the following plugins and key features of Jenkins:
We were able to implement DevSecOps (SAST scan, OSS vulnerability etc.) in our Jenkins pipeline. And now, we can build and deploy the application faster than before.
The results? We now: