Hacker News new | ask | show | jobs
by rjzzleep 3266 days ago
I've been eyeing Concourse and Go.CD over Jenkins for a while.

The main criticism I saw on Jenkins and Go.CD vs. Concourse was that Jenkins Pipelines aren't first class and that it's easier to export configuration(in that regard Concourse > Go.CD > Jenkins). On the other hand Jenkins and Go.CD supports extensions, which Concourse touts as a feature.

I also want the CI builds to create my base boxes with packer in multiple steps. And I somewhat want to be able to hand over the stuff to ops at some point to be able just stay alive for the next 5 years or more. Would anyone know if it makes sense to even consider concourse or go.cd or some other CI/CD solution and if so which?

Obviously the boxes need to be used as artifacts and everything has be on premise as well.

4 comments

How are Pipelines not first class in Jenkins? Pipelines are provided in the default installation and they are the first thing we talk about in the docs https://jenkins.io/doc/pipeline/tour/hello-world/

Disclosure: I work on Jenkins.

I think that the features are very different.

Admittedly I ditched jenkins before pipelines became a full feature, but my understanding of them in jenkins was that they are mostly for scheduling of jobs. IE, run job A after job B

Concourse passes inputs, outputs and resources between jobs as the ONLY STATE, and jobs trigger based off of changes on resources or the availability of new inputs.

I think that when you sit down and look at the two products, jenkins is great at running scripts, and concourse is great at managing code versions.

In the end we actually run both concouse + a script runner; this allows concourse to manage the tagging, builds, releases, and testing; but still allows us to run ad hoc scripts that concourse doesn't do well.

I'd be interested in taking another look at jenkins now that pipelines and the groovy DSL is solidified, but I get the idea that they still fill slightly different needs

I have to agree with the poster. Piplines are very definitely not first-class objects: - There is no way (in the default installation) of re-running a stage without running the whole job again. - I can't see the history of a stage. - Pipelines are a plugin, that only relatively recently became a default one - They seems be the anointed new path, but live side-by-side with other branching methods like the Matrix plugin at this point.

This is all in-line with the "everything is a plugin" methodology, but in my mind that way of thinking is one of the biggest hindrances to Jenkins, second only to the lack of a real database powering it.

I've worked with GoCD in production a bit. It's a bit of a beast to keep running, the UI is very strange, but the pipelines are extremely powerful and make for good separation of stages. I found it awkward to configure jobs, though, and the documentation is not excellent. There's also a much smaller plugin ecosystem than with Jenkins. We ended up having a guy spend a good lot of his time, nearing 50% some weeks, just keeping GoCD happy for a couple hundred devs.

Overall, I would choose Jenkins first unless you know there's something GoCD can handle significantly better.

> I also want the CI builds to create my base boxes with packer in multiple steps.

This is certainly possible using concourse, I've done it myself on a few teams. We had one job that started with a base ISO and used the virtualbox-iso builder to apply updates and build an OVA. Then a second job would trigger whenever a new OVA was built and used the virtualbox-ovf to apply a different set of provisioners. Since the virtualbox-ovf builder uses an OVA/OVF file as both it's input and output, you can do that as many times as you'd like.

The really important things for me are, Concourse has no text boxes to edit in your browser, so it is possible to version and automate the configuration of your automation, and all Concourse resources (plugin equivalents) are zero dependency- so you can have multiple versions in one pipeline, and no accidentally breaking everything to get one new feature.