As we know, Jenkins 2.0 has been released, and it is extending beyond just continuous integration (CI) to continuous delivery (CD). So I want to ask, what are the competitive advantages of Spinnaker compared to Jenkins 2.0?
Jenkins lacks capabilities as a complete deployment tool, especially for the cloud. Spinnaker has a richer deployment model with a master dashboard and native support for major cloud providers. Spinnaker still relies on a build server and must integrate with tools like Jenkins.
Setting up Jenkins as a Continuous Integration (CI) system within Spinnaker lets you trigger pipelines with Jenkins, add a Jenkins stage to your pipeline, or add a Script stage to your pipeline.
GoCD is an Open source Continuous Integration server. It is one of the best alternatives to Jenkins used to model and visualize complex workflows with ease. This CI tool allows continuous delivery and provides an intuitive interface for building CD pipelines.
Spinnaker is modular and can act as a central CD tool for many enterprises because it uses an API-based architecture.
I work extensively on the Jenkins integration in Spinnaker and in the Pipelines functionality at Netflix.
Spinnaker was never intended to be an end-to-end build tool. There are things that Jenkins will do better in terms of managing SCM, running tests, building packages, have gazillion plugins, etc, etc, etc.
The thing that Spinnaker tries to do well is to take a piece of software that you have published (either a debian package, a docker image, or a deployable JAR) and run it through a predictable software deployment cycle that is highly customizable. In other words, every feature in Spinnaker is built to make it easy to do highly-available, multi-account, multi-cloud artifact deployment.
Spinnaker pipelines take a cloud-centered view. Most of our pipeline stages and API controls are concerned with creating new server groups and changing existing server groups in a way that is predictable and user-friendly. When in doubt, this is the case we optimize for.
We have stronger opinions around how cloud deployment looks like and we will often have a point-and-click UI when dealing with cloud deployment tasks in our CD pipelines --- find the image in cluster x, disable this cluster, resize a server group, shrink this cluster, make this cluster take traffic, destroy this old cluster, etc.
Jenkins pipeline functionality was not available to us when we started writing Spinnaker 2+ years ago, so we built the functionality that we needed. The Jenkins support we came up with evolved from our needs helping other teams at Netflix build thousands of deployment pipelines internally. Since Netflix relies on Jenkins heavily for building and testing, the transition between Jenkins jobs and Spinnaker stages is pretty seamless.
There are teams at Netflix that do not use the Spinnaker pipeline functionality and instead use the Spinnaker API in their Jenkins jobs as a shortcut to deploy to AWS. If you're using Jenkins pipelines or similar CD tools, Spinnaker makes your deploy phase really flexible.
We also have teams that like the way Spinnaker breaks down Jenkins jobs into atomic, reusable tasks around one application. Teams that don't deploy to the cloud use Spinnaker because our pipelines fit their needs better than what they can find the Jenkins world.
Jenkins pipelines are pretty neat. I don't think Spinnaker will ever fully replace Jenkins and the million things it does. Our goal is to just make the 'deploy to cloud' step simpler and more extensible. The choice to use one over the other, together, or not at all, is up to you.
There are a few reasons you might choose Spinnaker over Jenkins (2.0) Pipeline as a CD tool:
On the other hand, there are many reasons to choose Jenkins Pipeline over Spinnaker
We ultimately chose Jenkins 2.0 Pipeline as our CD tool over Spinnaker and several others.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With