Pregunta 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 cuenta 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?


76
2018-05-25 06:34


origen


Respuestas:


Esta es mi experiencia:

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

En la base, hacen más o menos lo mismo. Ellos ejecutarán algunas secuencias de comandos en una imagen de servidor / 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 repositorio

La mayoría de los servidores de CI son bastante sencillos (concourse.ci, gitlab-ci, círculo-ci, travis-ci, drone.io, gocd y qué más tienes? Permiten ejecutar shell / bat desde una definición de archivo 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 servidor 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 comandos de curl). Además de eso, Jenkins admite complementos que instalarán ciertos binarios cuando no estén disponibles en su servidor (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 pipline plugin que viene predeterminado desde Jenkins 2), pero solía estar menos acoplado al repositorio que, por ejemplo, gitlab ci.

Usar archivos yaml para definir tu línea de compilación (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 pruebas, 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 perfectamente como Gitlab-ci, aunque ponen bastante esfuerzo en integraciones de terceros.

  • Su documentación debe comenzar en poco tiempo
  • el umbral para comenzar es muy bajo
  • El mantenimiento es fácil (sin complementos)
  • escalar corredores es simple
  • CI forma parte de su repositorio
  • Los trabajos / vistas de Jenkins pueden volverse desordenados

Algunas ventajas en el momento de escribir

  • Solo soporte para un solo archivo, pero eso va a ser fijo pronto

80
2018-05-25 07:08



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

La mayor parte del poder proviene de ser autónomo y integrando todo en el mismo producto en la misma pestaña del navegador: desde el navegador del repositorio, el tablero de discusión o el historial de compilación hasta las herramientas de implementación y supervisión.

Lo estoy usando ahora mismo para automatizar y probar cómo una aplicación se instala en diferentes distribuciones de Linux y es solo Arranque rápido para configurar (Intente abrir una configuración de trabajo compleja de Jenkins en Firefox y espere a que aparezca el guión que no responde, comparando lo ligero que es de editar .gitlab-ci.yml) El tiempo dedicado a configurar / escalar esclavos es considerablemente menor gracias a la binarios del corredor; más el hecho de que en GitLab.com obtienes corredores compartidos bastante decentes y libres.

Jenkins siente más manual después de algunas semanas de ser un usuario poderoso de GitLab CI, p. duplicar trabajos por rama, instalar complementos para hacer cosas simples como 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 repositorio; 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 repositorio con ella. Publicó la semana pasada la primera pieza que presenta los conceptos básicos, pros y contras y diferencias con otras herramientas: https://solidgeargroup.com/gitlab_countinuous_integration_intro


34
2018-03-08 13:02