DEV Community

Discussion on: What is your favorite CI/CD tool and why?

Collapse
 
pavanbelagatti profile image
Pavan Belagatti • Edited

Same here, I have a love/hate relationship with Jenkins.

I like Jenkins because,

  • So many plugins
  • versatility
  • Super nice integration with Github or Bitbucket
  • The pipeline as code is wonderful
  • The declarative pipeline is good

I hate Jenkins because,

  • Harder time understanding the point and click nature of Jenkins
  • Many of them think 'it's not a modern CI' tool.
  • can't write logic for your pipeline because the tool your using had its own logic
  • Documentation is not at all good
  • Its configuration(the server) cannot be defined as code which is a pain to manage plugins, credentials, etc
  • Declarative is amazing, but the lack of documentation makes you insane because you only find info for scripted pipelines
  • There's an annoying bug that doesn't let you save the project configuration in a github organization.
  • UI looks awful *The API is horrendously, staggeringly bad
  • There's no good way to handle multi-branch projects

I prefer CircleCI, Codeship or Shippable.

Collapse
 
dmfay profile image
Dian Fay

I was actually pretty happy with multibranch pipelines at my last job! The only problem is the same problem with pipelines in general -- poorly documented Groovy APIs and script approvals.

Thread Thread
 
evanoman profile image
Evan Oman

poorly documented Groovy APIs

So true! I was just trying to do something very simple and I couldn't find any info on how to interact with plugins (eventually figured it out by modifying an example).

Thread Thread
 
dmfay profile image
Dian Fay

It's really amazing that in 2018 the way you get your coverage report in Pipelines is still

step([
  $class: 'CoberturaPublisher',
  autoUpdateHealth: false,
  autoUpdateStability: false,
  coberturaReportFile: '**/cobertura-coverage.xml',
  failUnhealthy: false,
  failUnstable: false,
  maxNumberOfBuilds: 0,
  onlyStable: false,
  sourceEncoding: 'ASCII',
  zoomCoverageChart: false
])

because there isn't a proper step defined.