GoCD versus Gitlab
Differences between two delivery pipelines
Published: Wednesday, Mar 8, 2023 Last modified: Monday, Dec 9, 2024
Operationally
GoCD agents requires Java, the server requires Java and Postgres, and often requires manual migration steps to keep upto to date on an underlying platform.
Gitlab server is managed and the agent are called runners, which are largely
self-contained static binaries. However it does require at least Git 2.x, basic
utilities like su
and ideally Docker for docker based builds.
Tags
GoCD tag logic is a little counter intuitive. If you have two servers each with a tag A and tag B respecitively, you cannot deploy to “A, B”. You need to instead create a new tag C and apply to both machines to deploy to both.
UI
GoCD has numerous UX issues:
- Lots of modals usage
- No way to permalink a specific pipeline
- There is a focus on the VSM and allows to express interdepenecies.
Gitlab by contrast has all the builds steps in gitlab-ci.yml
with a handy instant visualisation
Version control
GoCD pipelines are edited via the UI form. There is no version control.