Batalla de Jenkins e GitLab CI/CD

Na última década producíronse importantes avances no desenvolvemento de ferramentas de integración continua (Continuous Integration, CI) e de implantación continua (Continuous Delivery, CD). O desenvolvemento de tecnoloxías para integrar o desenvolvemento e a operación de software (Operacións de Desenvolvemento, DevOps) provocou un rápido aumento da demanda de ferramentas CI/CD. As solucións existentes están a mellorarse constantemente, tentando estar ao día dos tempos, lánzanse as súas novas versións, no mundo do software de garantía de calidade (Quality Assurance, QA), aparecen constantemente moitos novos produtos. Con tanta variedade de opcións, escoller a ferramenta correcta non é unha tarefa fácil.

Batalla de Jenkins e GitLab CI/CD

Entre todas as ferramentas CI / CD existentes, hai dous proxectos que definitivamente paga a pena prestar atención a alguén que busca algo desta área. Estamos a falar de Jenkins e da ferramenta GitLab CI/CD, que forma parte da plataforma GitLab. Jenkins ten máis de 16000 estrelas en GitHub. O repositorio de GitLab en gitlab.com obtivo un pouco máis 2000 estrelas. Se comparamos a popularidade dos repositorios, resulta que Jenkins obtivo 8 veces máis estrelas que a plataforma, que inclúe GitLab CI/CD. Pero ao elixir unha ferramenta CI / CD, este está lonxe de ser o único indicador ao que debes prestar atención. Hai moitos outros, e isto explica por que en moitas comparacións, Jenkins e GitLab CI/CD están moi preto un do outro.

Tomemos, por exemplo, os datos da plataforma G2, que acumula opinións sobre unha gran variedade de produtos e as valoracións que lles dan os usuarios. Aquí está a valoración media Jenkins, baseado en 288 comentarios, é de 4,3 estrelas. Oh oh GitLab hai 270 comentarios, a valoración media desta ferramenta é de 4,4 estrelas. Non nos equivocaremos ao dicir que Jenkins e GitLab CI/CD compiten entre si en igualdade de condicións. É interesante notar que o proxecto Jenkins apareceu en 2011 e desde entón é a ferramenta favorita dos probadores. Pero ao mesmo tempo, o proxecto GitLab CI/CD, lanzado en 2014, tomou a súa posición, moi alta, grazas ás avanzadas funcionalidades que ofrece esta plataforma.

Se falamos da popularidade de Jenkins en comparación con outras plataformas similares, observamos que, despois de publicar un artigo que compara as plataformas Travis CI e Jenkins, organizamos unha enquisa. Nel participaron 85 usuarios. Pedíuselles aos entrevistados que escolleran a ferramenta de CI/CD que máis lles gustase. O 79 % elixiu Jenkins, o 5 % elixiu Travis CI e o 16 % indicou que prefire outras ferramentas.

Batalla de Jenkins e GitLab CI/CD
Resultados da enquisa

Entre outras ferramentas CI/CD, GitLab CI/CD mencionouse con máis frecuencia.

Se tes en serio DevOps, debes seleccionar coidadosamente as ferramentas adecuadas, tendo en conta as características específicas do proxecto, o seu orzamento e outros requisitos. Para axudarche a facer a elección correcta, imos revisar Jenkins e GitLab CI/CD. Esperemos que isto che axude a facer a elección correcta.

Introdución a Jenkins

Batalla de Jenkins e GitLab CI/CD
Jenkins é unha ferramenta CI/CD coñecida e flexible deseñada para automatizar moitas tarefas relacionadas con proxectos de software. Jenkins está escrito enteiramente en Java e lanzado baixo a licenza MIT. Ten un poderoso conxunto de funcións destinadas a automatizar as tarefas asociadas á creación, proba, implantación, integración e liberación de software. Esta ferramenta pódese usar en varios sistemas operativos. Estes inclúen macOS, Windows e moitas distribucións de Linux como OpenSUSE, Ubuntu e Red Hat. Existen paquetes de instalación para Jenkins deseñados para varios sistemas operativos, esta ferramenta pódese instalar en Docker e en calquera sistema que teña un JRE (Java Runtime Environment).

Os desenvolvedores de Jenkins crearon outro proxecto, Jenkins X, que está deseñado para funcionar nun ambiente Kubernetes. Jenkins X integra Helm, Jenkins CI/CD Server, Kubernetes e outras ferramentas para crear canalizacións CI/CD que sigan as mellores prácticas de DevOps. Por exemplo, GitOps úsase aquí.

Pódese engadir ao tesouro das vantaxes de Jenkins o feito de que os seus guións están moi ben estruturados, comprensibles e fáciles de ler. O equipo de Jenkins creou preto de 1000 complementos que teñen como obxectivo organizar a interacción de Jenkins cunha gran variedade de tecnoloxías. Os scripts poden usar sistemas de autenticación que, por exemplo, permiten conectarse a varios sistemas pechados.

Durante a operación do oleoduto Jenkins, pódese observar o que ocorre en cada paso, se certas etapas do traballo se completaron con éxito ou non. Podes ver todo isto, non obstante, sen utilizar unha determinada interface gráfica, pero si utilizando as capacidades do terminal.

Características de Jenkins

Entre as características coñecidas de Jenkins están a facilidade de configuración, un alto nivel de automatización de varias operacións e unha excelente documentación. Se falamos de resolver tarefas de DevOps, aquí Jenkins considérase unha ferramenta moi fiable que, por regra xeral, non ten sentido supervisar de preto todo o proceso de procesamento do proxecto. Este non é o caso doutras ferramentas CI/CD. Imos falar sobre algunhas das características máis importantes de Jenkins.

▍1. Soporte gratuíto, de código aberto e multiplataforma

Jenkins pode executarse en plataformas macOS, Windows e Linux. Tamén pode funcionar nun ambiente Docker, o que lle permite organizar a execución uniforme e rápida de tarefas automatizadas. Esta ferramenta tamén se pode executar como servlet en contedores habilitados para Java como Apache Tomcat e GlassFish. Instalación de Jenkins cualitativamente documentado.

▍2. Ecosistema de complementos desenvolvido

O ecosistema de complementos de Jenkins parece ser moito máis maduro que os ecosistemas de complementos doutras ferramentas CI/CD. Actualmente hai máis de 1500 complementos para Jenkins. Estes complementos están dirixidos a resolver unha gran variedade de tarefas, coa súa axuda pode automatizar unha variedade de proxectos. A abundancia de complementos gratuítos para escoller significa que se estás a usar Jenkins, non tes que mercar complementos caros de pago. Hai unha posibilidade integración Jenkins con moitas ferramentas DevOps.

▍3. Fácil instalación e configuración

Jenkins é bastante sinxelo de instalar e configurar. Ao mesmo tempo, o proceso de actualización do sistema tamén é moi cómodo. Aquí, de novo, cómpre mencionar a calidade da documentación, xa que nela podes atopar respostas a unha variedade de preguntas relacionadas coa instalación e configuración de Jenkins.

▍4. Comunidade amigable

Como xa se mencionou, Jenkins é un proxecto de código aberto, cuxo ecosistema inclúe unha gran cantidade de complementos. Unha gran comunidade de usuarios e desenvolvedores desenvolveuse arredor de Jenkins para axudar a desenvolver o proxecto. A comunidade é un dos factores que impulsa o desenvolvemento de Jenkins.

▍5. Dispoñibilidade da API REST

Mentres traballas con Jenkins, podes usar a API REST, que amplía as capacidades do sistema. A API para o acceso remoto ao sistema preséntase en tres versións: XML, JSON con soporte JSONP, Python. Aquí Páxina de documentación que abarca detalles sobre o traballo coa API REST de Jenkins.

▍6. Soporte para a execución paralela de tarefas

Jenkins admite a paralelización de tarefas de DevOps. Pódese integrar facilmente con ferramentas relevantes e recibir notificacións sobre os resultados das tarefas. As probas de código pódense acelerar organizando unha construción paralela do proxecto utilizando diferentes máquinas virtuais.

▍7. Soporte para o traballo en contornas distribuídas

Jenkins permítelle organizar compilacións distribuídas usando varios ordenadores. Esta característica é aplicable a grandes proxectos e utiliza un esquema de traballo, segundo o cal hai un servidor Jenkins mestre e varias máquinas escravas. As máquinas escravas tamén se poden utilizar en situacións nas que sexa necesario organizar a proba dun proxecto en diferentes contornas. Estas características diferencian a Jenkins doutros proxectos similares.

Introdución a GitLab

Batalla de Jenkins e GitLab CI/CD
GitLab CI/CD pódese chamar unha das ferramentas DevOps máis novas e queridas. Esta ferramenta gratuíta de código aberto está integrada no sistema de control de versións de GitLab. A plataforma GitLab ten unha versión comunitaria, admite a xestión de repositorios, ferramentas de seguimento de problemas, organización de revisión de código, mecanismos orientados á documentación. As empresas poden instalar GitLab localmente, vinculándoo a Active Directory e servidores LDAP para a autorización e autenticación seguras dos usuarios.

Aquí Un vídeo tutorial para axudarche a aprender a crear canalizacións CI/CD usando as capacidades CI/CD de GitLab.

GitLab CI/CD lanzouse orixinalmente como un proxecto autónomo, pero en 2015 este conxunto de ferramentas integrouse en GitLab 8.0. Un único servidor GitLab CI/CD pode soportar máis de 25000 usuarios. Con base en tales servidores, pode crear sistemas que estean altamente dispoñibles.

GitLab CI/CD e o proxecto principal de GitLab están escritos en Ruby and Go. Son liberados baixo a licenza MIT. GitLab CI/CD, ademais das funcións habituais das ferramentas CI/CD, tamén admite funcións adicionais relacionadas, por exemplo, coa programación do traballo.

Integrar GitLab CI/CD nun proxecto é moi sinxelo. Cando se usa GitLab CI/CD, o proceso de procesamento do código do proxecto divídese en etapas, cada unha das cales pode consistir en varias tarefas realizadas nunha determinada orde. As tarefas pódense afinar.

As tarefas poden executarse en paralelo. Despois de configurar a secuencia de etapas e tarefas, a canalización CI/CD está lista para funcionar. Pode supervisar o seu progreso supervisando o estado das tarefas. Como resultado, usar GitLab CI/CD é moi cómodo, quizais máis cómodo que outras ferramentas similares.

Características de GitLab CI/CD e GitLab

GitLab CI/CD é unha das ferramentas DevOps máis populares. O proxecto distínguese por unha documentación de alta calidade, as súas características son fáciles e cómodas de usar. Se aínda non estás familiarizado con GitLab CI/CD, a seguinte lista de funcións desta ferramenta darache unha idea xeral do que podes esperar dela. Hai que ter en conta que moitas destas funcións están relacionadas coa propia plataforma GitLab, na que se integra GitLab CI/CD.

▍1. Popularidade

GitLab CI/CD é unha ferramenta relativamente nova que atopou un uso xeneralizado. GitLab CI/CD converteuse aos poucos nunha ferramenta CI/CD moi popular utilizada para probas automatizadas e implementación de software. É sinxelo de configurar. Tamén é unha ferramenta de CI/CD gratuíta integrada na plataforma GitLab.

▍2. Soporte para GitLab Pages e Jekyll

Jekyll é un xerador de sitios estáticos que se pode usar dentro do sistema GitLab Pages para crear sitios baseados en repositorios de GitLab. O sistema toma os materiais de orixe e xera un sitio estático preparado a partir deles. Podes controlar o aspecto e as características destes sitios editando o ficheiro _config.yml, usado por Jekyll.

▍3. Capacidades de planificación de proxectos

Grazas á capacidade de planificar as fases dos proxectos, aumenta a comodidade de rastrexar os problemas e os seus grupos. Isto permítelle xestionar a organización do traballo en proxectos, planificar a súa execución nunha data concreta.

▍4. Escalado automático de corredores CI

Grazas ao escalado automático dos corredores encargados de realizar tarefas específicas, podes aforrar moito no custo do aluguer de capacidades do servidor. Isto é moi importante, especialmente cando se trata de ambientes onde se proban proxectos en paralelo. Ademais, isto é importante para proxectos grandes que consisten en varios repositorios.

▍5. Ferramentas de seguimento de problemas

As poderosas capacidades de seguimento de problemas de GitLab levaron a moitos proxectos de código aberto a utilizar a plataforma. GitLab CI/CD permite probas paralelas de diferentes ramas de código. Os resultados das probas analízanse convenientemente na interface do sistema. Isto diferencia a GitLab CI/CD de Jenkins.

▍6. Restrinxir o acceso aos repositorios

A plataforma GitLab admite restrinxir o acceso aos repositorios. Por exemplo, a aqueles que colaboran nun proxecto nun repositorio pódense asignar permisos axeitados aos seus roles. Isto é especialmente certo para proxectos corporativos.

▍7. Apoio activo da comunidade

En torno a GitLab desenvolveuse unha comunidade activa, que contribúe ao desenvolvemento desta plataforma e as súas ferramentas, en particular, GitLab CI/CD. A integración profunda de GitLab CI/CD e GitLab, entre outras cousas, fai que sexa fácil atopar respostas ás preguntas que xurdan ao traballar con GitLab CI/CD.

▍8. Soporte para varios sistemas de control de versións

GitLab CI/CD é un sistema que pode funcionar con algo máis que código aloxado nos repositorios de GitLab. Por exemplo, o código pódese almacenar nun repositorio de GitHub e a canalización CI/CD pódese organizar en base a GitLab usando GitLab CI/CD.

Comparación de Jenkins e GitLab CI/CD

Jenkins e GitLab CI/CD son moi boas ferramentas, ambas as cales son capaces de facer que o pipeline CI/CD funcione sen problemas. Pero se os comparas, resulta que, aínda que son similares en moitos aspectos, difieren entre si nalgúns aspectos.

Caracterización
Jenkins
GitLab CI/CD

Código aberto ou código pechado
código aberto
código aberto

Instalación
Obrigatorio.
Non é necesario xa que esta é unha función integrada da plataforma GitLab.

Características únicas
Soporte de complementos.
Profunda integración no sistema de control de versións.

Apoiar
Falta.
Dispoñible.

Instalación e configuración
As dificultades non causan
As dificultades non causan

Autodesplegamento do sistema
Esta é a única forma de usar o sistema.
Soportado.

Creación de pipelines CI/CD
Soportado, usando Jenkins Pipeline.
Soportado.

Seguimento do rendemento da aplicación
Falta.
Dispoñible.

Ecosistema
Hai máis de 1000 complementos.
O sistema está sendo desenvolvido dentro de GitLab.

API
Admite un sistema API avanzado.
Ofrece unha API para unha integración máis profunda nos proxectos.

Soporte de JavaScript
Dispoñible.
Dispoñible.

Integración con outras ferramentas
Admítese a integración con outras ferramentas e plataformas (Slack, GitHub).
Moitas ferramentas para a integración con sistemas de terceiros, en particular, con GitHub e Kubernetes.

Control de calidade do código
Compatible: usando o complemento SonarQube e outros complementos.
Soportado.

Diferenzas entre Jenkins e GitLab CI/CD

Despois de describir e comparar Jenkins e GitLab CI/CD, centrémonos nas diferenzas entre estas ferramentas DevOps. Coñecer estas diferenzas axudarache a comprender aqueles que prefiren unha destas ferramentas sobre a outra.

  • GitLab CI/CD pode controlar totalmente os repositorios Git. Estamos falando de xestionar ramas do repositorio e algunhas outras funcións. Pero Jenkins, aínda que pode funcionar con repositorios, non dá o mesmo nivel de control sobre eles que GitLab CI/CD.
  • Jenkins é un proxecto gratuíto de código aberto. Quen o escolle desprégao de xeito independente. E GitLab CI/CD está incluído na plataforma GitLab, esta é unha solución chave en man.
  • GitLab CI/CD admite ferramentas avanzadas de xestión de tarefas que funcionan a nivel de proxecto. Este lado de Jenkins está menos desenvolvido.

Jenkins e GitLab CI/CD: fortalezas e debilidades

Agora tes algunha idea sobre Jenkins e GitLab CI/CD. Agora, para que coñezas aínda mellor estas ferramentas, vexamos os seus puntos fortes e débiles. Supoñemos que xa decidiu que ferramenta precisa. Esperemos que esta sección che permita probarche.

▍Fortalezas de Jenkins

  • Un gran número de plugins.
  • Control total sobre a instalación da ferramenta.
  • Depuración sinxela de corredores.
  • Fácil configuración de nodos.
  • Fácil implementación de código.
  • Moi bo sistema de xestión de credenciais.
  • Flexibilidade e versatilidade.
  • Soporte para varias linguaxes de programación.
  • O sistema é comprensible a un nivel intuitivo.

▍Debilidades de Jenkins

  • Os complementos poden ser complicados de usar.
  • Cando se usa Jenkins en proxectos pequenos, o tempo necesario para configuralo vostede mesmo pode ser excesivamente grande.
  • Falta de información analítica xeral sobre as cadeas CI/CD.

▍Fortalezas de GitLab CI/CD

  • Boa integración con Docker.
  • Escalado sinxelo de corredores.
  • Execución paralela de tarefas que forman parte das etapas do pipeline CI/CD.
  • Utilizar o modelo de grafos acíclicos dirixidos ao establecer relacións de tarefas.
  • Alto nivel de escalabilidade debido á posibilidade de execución paralela de corredores.
  • Facilidade para engadir tarefas.
  • Resolución sinxela de conflitos.
  • Sistema de seguridade fiable.

▍Debilidades de GitLab CI/CD

  • Para cada tarefa, cómpre describir e cargar/descargar artefactos.
  • Non pode probar os resultados da fusión de ramas antes de que se fusionen realmente.
  • Ao describir as etapas do pipeline CI/CD, aínda non é posible sinalar etapas individuais nelas.

Resultados de

Tanto Jenkins como GitLab CI/CD teñen puntos fortes e débiles. A resposta á pregunta de que escoller depende das necesidades e características dun proxecto en particular. Cada unha das ferramentas CI/CD revisadas hoxe ten certas características, aínda que estas ferramentas foron creadas para resolver o mesmo problema. Ao mesmo tempo, Jenkins é unha ferramenta autónoma e GitLab CI/CD forma parte dunha plataforma deseñada para colaborar en código.

Ao elixir un sistema CI / CD, ademais das súas capacidades, paga a pena ter en conta os custos que poden estar asociados a el e con que están afeitos traballar exactamente os enxeñeiros de DevOps que apoian o proxecto.

Que ferramentas CI/CD usas?

Batalla de Jenkins e GitLab CI/CD

Batalla de Jenkins e GitLab CI/CD

Fonte: www.habr.com

Engadir un comentario