We often get asked by potential GoCD users “Why GoCD?” or “Why GoCD over Jenkins?”. Or even more often: “We use Jenkins. It’s not great but it’s set up, we are familiar with it and it’s good enough. Why change?” This blog post sets out to answer those questions. We are not going to tell you GoCD is perfect or even that it does all the same things as Jenkins. It wouldn’t be true. Nor will we provide an exhaustive feature comparison. There is no doubt that this post will skip some Jenkins features that are loved by its users. We will share where GoCD shines when compared to Jenkins. We’ll compare philosophy, getting started, continuous delivery, and plugins. (Spoiler alert: Use GoCD if you want to do continuous delivery).
Philosophy
GoCD is a best-of-breed tool for Continuous Delivery (CD). Full stop. GoCD aims to support the most common CD scenarios out of the box without any plugin installation. GoCD’s model maps to the core concepts of CD deployment pipelines.
Jenkins is a general purpose automation tool. It is not a best-of-breed CI or CD tool. (Yes, Jenkins is a pretty good CI tool.) Pretty much any use case requires installation of a particular set of plugins. Near everything is pluggable and there are over 1000 community plugins. Plugins are fundamental to Jenkins.
Bottom Line: If you want a single-purposed, focused tool use GoCD. If you aren’t laser-focused on CD and prefer maximum tinker-ability, Jenkins might be for you.
Continuous Delivery
CD is a priority for GoCD and for Thoughtworks. GoCD exists to help its users implement CD. Thoughtworks is a thought leader in CD and our people regularly write and speak about CD to the wider tech community.
GoCD encourages that there be only one way to implement the fundamental CD patterns. When you search for help on how to implement the various deployment pipeline patterns you will generally find a single, well-known, well-tested answer. These searches will turn up results for Jenkins as well but the results might show obsolete plugins or many solutions, without any definitive guidance.
If you are are new to CD and deployment pipelines, GoCD’s getting started tutorial is a big help. It will teach you the key deployment pipeline patterns while you learn how GoCD works.
Jenkins 2.0 placed a big emphasis on its Pipeline feature. But there is little evidence that Jenkins has made CD its top priority. CD is still implemented by the installation of a variety of plugins. Many common CD patterns (build an artifact only once, full traceability up and down stream, and more) are either impossible to implement or can only be cobbled together with fragile combinations of plugins. The official Pipeline feature documentation does not reference CD or deployment pipeline concepts. You might struggle when implementing many of the core deployment pipeline patterns.
Bottom Line: If you are serious about implementing CD, beginner or expert, GoCD is the right choice. It’s easy to model deployment pipelines and the GoCD community truly cares about CD.
Getting Started
GoCD has an easy to follow, definitive tutorial for getting started. This tutorial teaches the basic concepts of CD as well as the GoCD domain model. Someone new to GoCD will be up and running in 15 minutes with this tutorial. It teaches the app, the core concepts, and the preferred style of building deployment pipelines.
A large part of installing Jenkins is installing the right mix of plugins for your use case. It can be challenging to know what plugins you will need up front. Jenkins 2.0 has improved this experience a bit by providing a wizard to guide you through plugin installation. This wizard includes a default set of common plugins and prompting you to setup your first build. But this won’t prevent you from needing an in depth understanding of the plugins to create the correct plugin mix for your use case.
Both products can present a tough getting started experience for someone who just wants to dive right in. GoCD’s model can be difficult to grok if you are coming to it from a pure CI tool. Jenkins has hurdles around configuring required tools, unintuitive SCM configuration, and installing additional plugins.
Bottom Line: If you are wanting to build deployment pipelines for CD, GoCD’s tutorial will quickly get you to a very productive place. Both tools can be frustrating to use if you are new to them and you don’t RTFM.
Plugins
GoCD’s plugin philosophy is that plugins should extend its ecosystem and not alter its core functionality. Nor does the team aim to use plugins to make GoCD ultimately flexible. The aim is to keep it as easy-as-possible to implement CD on GoCD but in as many environments as possible.
GoCD has a handful of extension points: SCM, task, notifications, authentication, authorization, configuration, elastic agents. The team designs endpoints such that all plugins will be interoperable. It doesn’t matter whether the core team or the community has built the plugin.
Jenkins has a thriving plugin ecosystem. They should be proud. Jenkins is seemingly infinitely configurable, hackable, and extendable via plugins.
It’s our opinion requiring just the right set of plugins to get Jenkins to support your use case is problematic. Upgrades are challenging. Support and maintenance are unclear. Not all plugins play well together. There’s almost never one way to do something. Multiple ways of doing things is not bad in and of itself but the follow-on from that is that it’s hard to find answers to questions around how to implement builds & pipelines. And we think that’s a huge problem.
Bottom Line: GoCD provides its core value out of the box. Maybe you will add a few integration plugins to make GoCD fit better in your environment. Jenkins will require many plugins to deliver value. You will need to understand the plugins, how they interoperate, and how to upgrade them. GoCD will feel more stable. Jenkins will feel more hackable. You will need to decide which is a better match to your needs and philosophy.
The Final Word
If you are doing or want to do CD you should be using GoCD. GoCD will feel good to both beginners and those highly experienced in building deployment pipelines. If you want to utilize a vast plugin catalog to automate “all the things” then Jenkins might be a better fit for you.
The GoCD community continues to grow, is passionate about CD and is where you should be if you are serious about CD. We are happy to discuss individual needs in our user group so get in touch.