In many product development workflows, there are three main concerns: building, testing, and deployment. In these scenarios, every change that is made to the code means something could accidentally go wrong, so to lessen the likelihood of this happening, developers assume many strategies to reduce incidents and bugs. One strategy is to adopt continuous integration (CI) tools, which are used together with a source version software to verify if something has gone wrong for every update. CI is a procedure in which every commit on the repository triggers a custom workflow that can do all sorts of testing. It can also code lint to detect bad programming and take care of code style and report generation.
A step ahead of CI is Continuous Deployment (CD). With CD, not only will all the code be tested for every change, but it will also be ready to be deployed. There are a lot of complexities at this stage. Database-dependent systems, for example, should apply database migrations and data transformation at every deployment that needs it. In the same case, it is common practice to prepare rollback scripts if the deployment fails.
Automation servers are a crucial aspect of modern software development workflows. It is important to detect problems before they go to production as soon as possible, and CI workflows try to detect them after every developer change. This way, potential big code reworks are avoided.
In this article, three popular automation servers, as well as their testing, deployment, and delivering solutions, will be compared: Jenkins, Bamboo, and TeamCity.