Ravikiran763 Ravikiran763 - 4 months ago 50
Git Question

Gitlab CI vs Jenkins

Can anyone please let me know what is the difference between Jenkins and other CI like Gitlab-CI, drone.io coming with GIT distribution. On some research I could only come up that Gitlab community edition doesn't allow Jenkins to be added but Gitlab enterprise edition does. Is there any other significant differences.

Thank you all in advance

Rik Rik
Answer

This is my experience:

At my work we manage our repositories with gitlab ee and we have a Jenkins server (1.6) running.

In the basis they do pretty much the same. They will run some scripts on a server/docker image.

TL;DR;

  • Jenkins is easier to use/learn but has the risk to become a plugin hell
  • Jenkins has a GUI (this can be preferred if it has to be accesible/maintainable by other people)
  • Integration with GitLab is less than with Gitlab-ci
  • Jenkins can be split off your repo

Most CI servers are pretty straight forward (concourse.ci, gitlab-ci, circle-ci, travis-ci, and what else have you). They allow you to execute shell/bat from a yaml file definition. Jenkins is much more pluggable, and comes with a UI. This can be either an advantage or disadvantage, depending on your needs.

Jenkins is very configurable because of all the plugins that are available. The downside of this is that your ci server can become a spaghetti of plugins.

In my opinion chaining and orchestrating of jobs in Jenkins is much simpler (because of the UI) than via Yaml (calling curl commands). Besides that Jenkins supports plugins that will install certain binaries when they are not available on your server (don't know about that for the others).

Nowadays (jenkins2 also supports more "proper ci" with the Jenkinsfile and the pipline plugin which comes default as from Jenkins 2), but used to be less coupled to the repository than i.e. gitlab ci.

Using yaml files to define your build pipeline (and in the end running pure shell/bat) is cleaner.

EDIT: what I forgot to mention here is the plug-ins available for jenkins that allow you to visualize all kinds of reporting, such as test results, coverage and other static analyzers. Ofcourse you can always write or use a tool to do this for you, but it is definitely a plus for Jenkins (especially for managers who tend to value these reports too much)