# Continuous Deployment System

DevFeed: [Continuous Deployment System](<https://devfeed.tech/articles/continuous-deployment-system-19982.md>)

Original publisher: [Read original article](<http://engineering.hackerearth.com/2013/08/05/continuous-deployment-system/>)

Published: 2013-08-05T00:00:00Z

Content type: tutorial

Language: en

Sources: [HackerEarth](<https://devfeed.tech/sources/hackerearth.md>)

Topics: [Continuous Deployment (CD)](<https://devfeed.tech/topics/continuous-deployment.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [Git](<https://devfeed.tech/topics/git.md>), [bitbucket](<https://devfeed.tech/topics/bitbucket.md>), [Amazon EC2](<https://devfeed.tech/topics/amazon-ec2.md>), [Testing](<https://devfeed.tech/topics/testing.md>)

Tags: [bitbucket](<https://devfeed.tech/tags/bitbucket.md>), [continuous-deployment](<https://devfeed.tech/tags/continuous-deployment.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [git](<https://devfeed.tech/tags/git.md>), [server](<https://devfeed.tech/tags/server.md>), [servers](<https://devfeed.tech/tags/servers.md>), [testing](<https://devfeed.tech/tags/testing.md>)

## AI overview

This article explains HackerEarth's Continuous Deployment System, which automates deployment and testing for a rapidly changing product. The system uses Bitbucket hooks, a toolchain server, commit filtering and grouping, integration testing through RabbitMQ, and deployment triggered by git push origin master.

## Source excerpt

This is one of the coolest and important thing we recently built at HackerEarth. What's so cool about it? Just have a little patience, you will soon find out. But make sure you read till the end :) I will try to make this post as resourceful, and clear so that people who always wondered how to implement a Continuous Deployment System(CDS) can gain insights. At HackerEarth, we iterate over our product quickly and roll out new features as soon as they are production ready. In last two weeks, we deployed 100+ commits in production, and a major release is scheduled to be launched within a few days comprising over 150+ commits. Those commits consists of changes to backend app, website, static files, database and many more. We have over a dozen different types of servers running e.g. webserver, code-checker server, log server, wiki server, realtime server, NoSQL server, etc. And all of them are running on multiple ec2 instance at any point of time. Our codebase is still tightly integrated as one single project with many different components required for each server. And when there are changes to codebase, all the related servers and components need to be updated when deploying in production. Doing that manually would have just driven us crazy, and would have been a total waste of time! See the table of commits deployed on a single day, and that too on lighter day! With such speed of work, we needed a automated deployment system along with automated testing. Our implementation of CDS helps the team to roll out features in production with just a single command: git push origin master. Also, another reason to use CDS is that we are trying to automate the crap out of everything and I see us going in right direction. ####CDS Model The process begins with developer pushing bunch of commits from his master branch to remote repository which in our case is setup on Bitbucket. We have setup a post hook on Bitbucket, so as soon as Bitbucket receives commits from developer, it genera