|    +91 44 43626468 / 78 /  88    

Automating testing, deployments and configuration management using Devops

Automating the integration testing, deployment & configuration management of the infrastructure using DevOps for a Property Management Application

Customer Challenges

  • Lengthy cycle time from the time of code-check to feedback from QA team
  • High margin of human error in repeated manual testing during sprints build verification
  • Inconsistency in Production / QA / Integration Environments paved way for defect seepage

Solution Highlights

  • Continuous Integration
  • Continuous Monitoring
  • Automated builds
  • Automated deployments
  • Automated notifications to JIRA
  • Automated tests

Implementation Steps

In order to shorten the cycle time, we proposed that continuous integration and continuous delivery be implemented.  To achieve this we considered an infrastructure where development, testing and production where kept in an isolated environment. Automated testing and configuration management tools were used to enhance the overall quality of the deliverables.


  • We used Puppet to manage the machine configurations and Dockers where used for containerization.
  • Automation testing was done using CodeceptJS & Selenium.
  • The developers were informed about the status of the build and test scenarios through Slack.
  • Git was used for Source control management. In which three major branches were maintained Development, UAT and Production (master).
  • The entire process was managed as a pipeline with separate branches.
  • These pipelines were created using Jenkins where Continuous delivery was achieved using Ansible.


  • Three machines were used in this process
  • The first machine is the Master machine which acts as both Puppet Master and Jenkins Master
  • The second machine and the third machines were the DIT(Development Integration Testing) and QA machine whose configuration is managed by Puppet Master and pipeline is managed by Jenkins Master
  • In the DIT pipeline,
  • Code was pulled from the repository
  • Developer and production dependencies were installed
  • Build was created
  • Docker containers were created with back up images of the database
  • Application was tested using Selenuim/CodeceptJs. In case of failure, report and artefacts links were sent to notified to the developers
  • If success, the code is committed to QA branch of repository
  • Application was transferred to QA pipeline
  • Notified to the developer with commit id and statistics using Slack & Email
  • In the QA pipeline,
  • Code was pulled from the repository
  • Production dependencies were installed
  • Optimized build was created
  • Docker containers were created according to the infrastructure requirements
  • Notified to the developer with the url and status of the application using Slack & Email
  • After QA,
  • After the QA is passed, the code is committed to production (master) branch. After this the production pipeline is executed.
  • In Production,
  • The first step was to back up the application which involved the backing up of the existing code, backing up of the database and notifying the status to the team.
  • The code was pulled from the repository
  • Dependencies of the project were installed
  • Optimized, production ready build was created
  • The status and the other parameters were notified to the team using Slack & Email


  • Early detection of defects and faster resolution with tool based automated testing
  • Shorter release cycles enabled faster time to market to the clients which helped them realize their ROI in a shorter time
  • Overall improvement in quality of the deliverable with continuous testing and continuous monitoring
  • Co-ordinated release planning with fall back options was achieved
  • Shorter time to recover in case of any failure with a strong and robust versioning system and easy rollbacks.

Similar stories

Tell us a little about yourself, and we'll be in touch right away