Codeship is very well suited to teams that have specialized devops members along with other specialized developers. It lets the other developers focus on what they do best, without having to learn another technology stack. This has cut down on a lot of headaches at our company with developers needing to deploy code to various different hosting services across different content management systems. The experience to push code is essentially the same for a developer no matter what the underlying technology is
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.
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.
Codeship is easier to use than Jenkins because it does not require you to set up your own server, and it provides a large amount of out-of-the-box integrations for version control systems and cloud environments. AWS CodePipeline is native to AWS and cannot deploy applications reliably to other cloud environments such as GCP or Azure.
I prefer using GoCD compared to Jenkins. The UI makes sense, I like the simplicity to hit the 'Play' button for a straightforward deployment of the 'Play +' if you need to override some settings when deploying whereas Jenkins, you have the whole page for each pipeline. The environment makes sense but can often confuse the user while GoCD simply has a drop-down to select your environment.
We have a few small projects with different developers and Codeship shows everyone clearly, if something work, or if it doesn't.
In one small project with a team of three developers, we have configured two builds and it takes 2-5 minutes for everyone on the team to push changes to an infrastructure handling a little over 3M users.
Settings.xml need to be backed up periodically. It contains all the settings for your pipelines! We accidentally deleted before and we have to restore and re-create several missing pipelines
More straight forward use of API and allows filtering e.g., pull all pipelines triggered after this date