Gitlab CI vs Jenkins

¿Puede alguien decirme cuál es la diferencia entre Jenkins y otros CI como Gitlab-CI, drone.io que viene con distribución de GIT? En algunas investigaciones, solo pude darme count de que la edición comunitaria de Gitlab no permite agregar Jenkins, pero la edición empresarial de Gitlab sí lo permite. ¿Hay alguna otra diferencia significativa?

Esta es mi experiencia:

En mi trabajo, gestionamos nuestros repositorys con gitlab ee y tenemos un server Jenkins (1.6) en ejecución.

En la base, hacen más o less lo mismo. Ellos ejecutarán algunas secuencias de commands en una image de server / acoplador.

TL; DR;

  • Jenkins es más fácil de usar / aprender, pero tiene el riesgo de convertirse en un infierno de complemento
  • Jenkins tiene una GUI (esto se puede preferir si tiene que ser accesible / mantenible por otras personas)
  • La integración con GitLab es menor que con Gitlab-ci
  • Jenkins se puede dividir de su repository

La mayoría de los serveres de CI son bastante sencillos ( concourse.ci , gitlab-ci , circle-ci , travis-ci , drone.io , gocd y qué más tienen). Permiten ejecutar shell / bat desde una definición de file yaml. Jenkins es mucho más conectable y viene con una IU. Esto puede ser una ventaja o una desventaja, según sus necesidades.

Jenkins es muy configurable debido a todos los complementos que están disponibles. La desventaja de esto es que su server de CI puede convertirse en un spaghetti de complementos.

En mi opinión, encadenar y orquestar puestos de trabajo en Jenkins es mucho más simple (debido a la interfaz de usuario) que a través de Yaml (llamar a commands curl). Además de eso, Jenkins admite complementos que instalarán ciertos binarys cuando no estén disponibles en su server (no se sabe de eso para los demás).

Hoy en día ( jenkins2 también es compatible con más "ci adecuado" con el Jenkinsfile y el plugin pipline que viene pnetworkingeterminado desde Jenkins 2), pero solía estar less acoplado al repository que es decir, gitlab ci.

Usar files yaml para definir tu línea de compilation (y al final ejecutar shell / bat puro) es más limpio.

EDITAR: lo que olvidé mencionar aquí son los complementos disponibles para Jenkins que le permiten visualizar todo tipo de informes, como resultados de testings, cobertura y otros analizadores estáticos. Por supuesto, siempre puede escribir o usar una herramienta para hacer esto por usted, pero definitivamente es una ventaja para Jenkins (especialmente para los gerentes que tienden a valorar demasiado estos informes)

EDIT2: Últimamente he estado trabajando más y más con Gitlab-ci. En Gitlab están haciendo un gran trabajo haciendo que toda la experiencia sea divertida. Entiendo que la gente usa Jenkins, pero cuando tienes Gitlabs ejecutándose y disponible, es muy fácil comenzar a usar Gitlab-ci. No habrá nada que se integre tan bien como Gitlab-ci, a pesar de que ponen bastante esfuerzo en integraciones de terceros.

  • Su documentation debe comenzar en poco time
  • el umbral para comenzar es muy bajo
  • El mantenimiento es fácil (sin complementos)
  • escalar cornetworkingores es simple
  • CI forma parte de su repository
  • Los trabajos / vistas de Jenkins pueden volverse desorderados

Algunas ventajas en el momento de escribir

  • Solo soporte para un solo file, pero eso se va a arreglar pronto

Estoy de acuerdo con la mayoría de las notas de Rik, pero mi opinión sobre cuál es más simple es todo lo contrario : GitLab está demostrando ser una herramienta increíble para trabajar.

La mayor parte del poder proviene de ser autónomo e integrar todo en el mismo producto bajo la misma pestaña del browser: desde el browser del repository, el tablero de discusión o el historial de compilation hasta las herramientas de implementación y el monitoreo .

Lo estoy usando ahora mismo para automatizar y probar cómo una aplicación se instala en diferentes distribuciones de Linux y su configuration es extremadamente rápida (intente abrir una compleja configuration de trabajo de Jenkins en Firefox y esperar a que aparezca el script que no responde vs. qué tan ligero es editar .gitlab-ci.yml ). El time dedicado a configurar / escalar esclavos es considerablemente menor gracias a los binarys del cornetworkingor ; además del hecho de que en GitLab.com obtienes cornetworkingores compartidos bastante decentes y libres.

Jenkins se siente más manual después de algunas semanas de ser un usuario avanzado de GitLab CI, por ejemplo, la duplicación de trabajos por twig, la installation de complementos para hacer cosas simples como la carga de SCP. El único caso de uso al que me he enfrentado cuando lo extraño hoy es cuando se trata de más de un repository; eso necesita ser bien resuelto aún.

Por cierto, actualmente estoy escribiendo una serie sobre GitLab CI para demostrar cómo no es tan difícil configurar la infraestructura de CI del repository con ella. La semana pasada se publicó la primera parte que presenta los conceptos básicos, los pros y los contras y las diferencias con otras herramientas: https://solidgeargroup.com/gitlab_countinuous_integration_intro