CI/CD is the way!
Use Cases and Deployment Scope
GoCD is used throughout the whole global AdNovum group. It's the backbone of our CI/CD system. GoCD is tightly integrated into our SCM system, our binary repo system, as well as both our internal on-premise VMs and our Azure subscription. So our engineers make changes to the code, create a PR to trigger a PR build to verify the changes. After merging to main branch, as well as on a daily basis, we have pipelines to build the main branch then push the daily artifacts to binary repo. Another daily pipeline then pick things up to deploy to a testing environment. Promotion from daily environment to other ones are triggered as needed. Everything automated!
Pros
- Pipeline-as-Code works really well. All our pipelines are defined in yml files, which are checked into SCM.
- The ability to link multiple pipelines together is really cool. Later pipelines can declare a dependency to pick up the build artifacts of earlier ones.
- Agents definition is really great. We can define multiple different kinds of environments to best suit our diverse build systems.
Cons
- I miss the ability to have custom build parameters on GUI. So, all the changes even the smallest ones have to be checked into SCM.
- If there's an ability to define the priority of the pipelines, that would be great. Some build environments only have a couple of agents, so there are times that builds have to wait for quite a long time.
- I wish that I can create a new view for a group. Currently, if I have a view for group A, then more pipelines are added to that group, I have to edit the view to manually add the new pipelines.
Likelihood to Recommend
GoCD is easy to set up. So if you just want to get some pipelines up & running quickly, & they're quite stable, or you can have many pipelines for different needs then GoCD is great. Still, if you only want to have a few pipelines, but with the flexibility to run them with different parameters dynamically, then Jenkins is better.
