AWS Developer Tools
AWS Developer Tools allows you to "Host code, build, test, and deploy your applications to AWS". This article focuses on CodeBuild (for building deployable artefacts), CodeDeploy (for deploying to environments), CodePipeline (for defining and running build pipelines) and CodeCommit (an AWS-hosted Git repository solution).
What is it?
Bitrise is a cloud-hosted CI/CD as-a-service platform built for mobile application projects. It is a mature product, and is widely used for mobile engineering projects. It does have some small disadvantages over Circle CI and other build platforms (see below), but the built-in mobile features make it worth consideration.
"CI/CD" is short for Continuous Integration and Continuous Deployment (or sometimes "Delivery"). What this means in practice is automating build, test and deployment of software. As a technique this is pervasive, and is widely accepted as standard practice. This is a practical guide on how to do CI/CD well.
Circle CI is recommended as the default choice for cloud-hosted CI/CD systems. It is a mature product, but still retains the cleanliness and modernity of design which makes it so easy to use well.
While Concourse has an elegant architecture, a clean 'everything as code' approach and features iconic pipeline visualisations, it has failed to gain significant traction and remains a niche tool. The continued small user community, poor documentation and esoteric choice of Garden as the container run time instead of Docker presents operational challenges. For new deliverables we recommend other tools over Concourse, although there is not an urgent need to migrate existing projects away from it.
GitLab provide a suite of products which work well together but can be used separately; the two primary components are a git wrapper, similar to GitHub, and the well-regarded GitLab CI CI/CD system, which is a good default choice if running within your own infrastructure.
Jenkins is one of the most widely used CI/CD systems we come across. Despite its long history and large user base, the common consensus is that there are now far better alternatives than Jenkins. Jenkins is a workable solution for clients already invested in it, but we do not consider it a default choice for greenfield work. While plugins can add features such as containerised builds and pipelines definitions as code, these have to be configured carefully to work reliably and it is hard to avoid a cobbled-together feel. Newer tools which have been built with features such as these in mind tend to offer a cleaner and more reliable solution with less effort.