TL; DR – If you are trying to modernise your development practices, or go cloud native, without CI/CD you are doing it wrong
Possibly the most frequent piece of advice I have given over the last number of years has been for development organisations to get a continuous integration (CI) system into place. It is closely followed by looking at your deployment pipeline, but without, at least, the CI building block there is pretty much nothing else a development organisation is going to do to become more productive that will have even moderate longer term success.
When it comes to the world of cloud native having a CI/CD pipeline in place is basic table stakes. This was very aptly summed up recently by Kelsey Hightower from Google when he said:
If you don't have a CI system capable of building your application, then Kubernetes is the least of your problems. Focus on CI first.
— Kelsey Hightower (@kelseyhightower) June 10, 2016
Jenkins, Jenkins, Jenkins
The undoubted leader in the CI world is Jenkins. It is by far the most common tool that we hear about in discussions, and the level of activity and interest on both Stackoverflow and github only goes to confirm this.
Comparing the discussions on Jenkins to the other major CI systems people mention in our conversations we see just how much of lead it has.
The New World, Pipelines and a Container Focus
With the advent of containers, we have seen a number of companies emerge providing CI/CD pipelines, along with various pieces of tooling and approaches to automate the workflow.
Companies and offerings operating in this space broadly fit into two categories, those that are focused almost exclusively on containers and a pipeline for that ecosystem (e.g. Wercker, Shippable, Codeship and Semaphore), and those that are looking at multiple output formats (e.g TravisCI, CircleCI), sometimes in conjunction with another system such as jFrog for managing the build output binaries/artifacts.
Spinnaker and Concourse
For more mature users of CI/CD two projects that are of interest are Spinnaker and Concourse.
Spinnaker is a multi-cloud deployment system developed by Netflix. Now it is fair to say that spinnaker is not for the faint of heart given the complex set up requirements, and as a project for general usage it is still evolving. However, as with many pieces of software from Netflix, it solves a lot of the deployment problems that companies have at scale.
Concourse is an all new CI/CD pipeline tool being developed by Pivotal, and it has a stated goal of reducing the number of moving parts in the pipeline to a minimum so you have a clear and predictable way in which software moves through the pipeline. This is very much in keeping with the overall opionated approach that the Cloud Foundry community takes to software, and if you are already bought into Cloud Foundry, Concourse may be interest you. It will be interesting to see the usage patterns across the wider software development community, but there are definitely attractions in the simplicity of the approach.
Both projects are seeing reasonable levels of interest on Github, and we expect to see both evolve overtime, with Concourse in particular coming into play in the Cloud Foundry world due to its background at Pivotal.
Pipelines, Pipelines and Jenkins
The importance of pipelines has obviously been recognised by Cloudbees, the main company behind Jenkins with their Blue Ocean project announced last month. This is a very early stage effort, but again we are already seeing a significant level of interest.
A Single Thread of Advice?
No matter what tools you are going to choose though, there is one single point to take away. If you are a development organization that wants to be more agile, get your CI/CD pipeline in order. It does not matter how many cool new technologies you throw at things, if this part of the puzzle is not in place, you are setting yourself up to fail.
Disclaimers: Pivotal, Atlassian (Bamboo), Oracle (Hudson) are current RedMonk clients.