4 ms·
GoCD pipeline config is actually (sort of) declarative and stored in XML format in an internal git repo so it's versioned and you can recover/replay any version
by ABS 11y ago
GoCD pipeline config is actually (sort of) declarative and stored in XML format in an internal git repo so it's versioned and you can recover/replay any version of it (in fact you can visualize the very first version of a pipeline you ran 3 years ago in the Value Stream Map visualisation and execute it again).
Agreed that the format isn't ideal but there are non-trivial problems in breaking it down due to the advanced way GoCD manages to tackle the diamond dependency problem (aka the Fan-In functionality).
Totally agree with you re pipeline as a first class citizen: I wrote this back in 2014 so it's kinda old now and surely Jenkins got better but I think it still applies by and large: https://highops.com/insights/continuous-delivery-pipelines-gocd-vs-jenkins/ https://highops.com/insights/continuous-delivery-pipelines-g...
- jacques_chester 11y agoConcourse avoids the fan-in/fan-out problems of GoCD's XML configuration by performing planning for you. That is, you define the inputs and outputs of a job, then Concourse derives how to carry out your jobs in the correct order under the correct conditions. A Concourse yaml file is pretty flat, as a consequence. That's a great writeup. I think you'd find Concourse attractive.
- ABS 11y agoI played with Concourse when it was initially released but it wasn't there for us yet and at the moment there is no reason to change but definitely need to test it again. I couldn't find any docs on intra pipeline dependency management though, any links? Thanks!
- jacques_chester 11y agoI'd have to ask around; I imagine the Cloud Foundry release engineering team have some tricks up their sleeves. As for my own project, we have an increasing group of downstream consumers of our API. There are a few ways I could signal upgrades. They could just watch my repo and narrow it to the directories they're interested in. I can also publish a file on S3 or push into a git repo that they watch.