Batalla de Jenkins i GitLab CI/CD

En l'última dècada, s'han fet avenços significatius en el desenvolupament d'eines per a la integració contínua (Continuous Integration, CI) i el desplegament continu (Continuous Delivery, CD). El desenvolupament de tecnologies per integrar el desenvolupament i l'operació de programari (operacions de desenvolupament, DevOps) ha provocat un ràpid augment de la demanda d'eines CI/CD. Les solucions existents es milloren constantment, intentant estar al dia amb els temps, es publiquen les seves noves versions, en el món del programari d'assegurament de la qualitat (Quality Assurance, QA), constantment apareixen molts nous productes. Amb tanta riquesa d'eleccions, triar l'eina adequada no és una tasca fàcil.

Batalla de Jenkins i GitLab CI/CD

Entre totes les eines CI / CD existents, hi ha dos projectes que val la pena prestar atenció a algú que busqui alguna cosa d'aquesta àrea. Estem parlant de Jenkins i de l'eina GitLab CI/CD, que forma part de la plataforma GitLab. Jenkins en té més 16000 estrelles a GitHub. El dipòsit de GitLab a gitlab.com va obtenir una mica més 2000 estrelles. Si comparem la popularitat dels dipòsits, resulta que Jenkins va obtenir 8 vegades més estrelles que la plataforma, que inclou GitLab CI/CD. Però a l'hora de triar una eina CI / CD, aquest no és l'únic indicador al qual hauríeu de prestar atenció. N'hi ha molts d'altres, i això explica per què en moltes comparacions, Jenkins i GitLab CI / CD estan molt a prop l'un de l'altre.

Prenguem, per exemple, les dades de la plataforma G2, que acumula ressenyes sobre una gran varietat de productes i les valoracions que els donen els usuaris. Aquí teniu la valoració mitjana Jenkins, basat en 288 comentaris, és de 4,3 estrelles. Oh oh GitLab hi ha 270 comentaris, la qualificació mitjana d'aquesta eina és de 4,4 estrelles. No ens equivocarem en dir que Jenkins i GitLab CI / CD competeixen entre ells en igualtat de condicions. És interessant assenyalar que el projecte Jenkins va aparèixer el 2011 i des de llavors ha estat una eina preferida per als provadors. Però al mateix temps, el projecte GitLab CI/CD, llançat l'any 2014, ha pres la seva posició, molt alta, gràcies a les funcionalitats avançades que ofereix aquesta plataforma.

Si parlem de la popularitat de Jenkins en comparació amb altres plataformes similars, observem que, després de publicar un article que compara les plataformes Travis CI i Jenkins, vam organitzar una enquesta. Hi van participar 85 usuaris. Es va demanar als enquestats que escollissin l'eina CI/CD que més els agradava. El 79% va triar Jenkins, el 5% va triar Travis CI i el 16% va indicar que preferia altres eines.

Batalla de Jenkins i GitLab CI/CD
Resultats de l'enquesta

Entre altres eines de CI/CD, GitLab CI/CD es va esmentar amb més freqüència.

Si us interessa seriosament DevOps, heu de seleccionar acuradament les eines adequades, tenint en compte les especificitats del projecte, el seu pressupost i altres requisits. Per ajudar-vos a prendre la decisió correcta, revisarem Jenkins i GitLab CI/CD. Esperem que això us ajudarà a prendre la decisió correcta.

Introducció a Jenkins

Batalla de Jenkins i GitLab CI/CD
Jenkins és una eina CI/CD flexible i coneguda dissenyada per automatitzar moltes tasques relacionades amb projectes de programari. Jenkins està escrit completament en Java i publicat sota la llicència MIT. Té un potent conjunt de funcions destinades a automatitzar les tasques associades a la creació, prova, desplegament, integració i llançament de programari. Aquesta eina es pot utilitzar en diversos sistemes operatius. Aquests inclouen macOS, Windows i moltes distribucions de Linux com OpenSUSE, Ubuntu i Red Hat. Hi ha paquets d'instal·lació per a Jenkins dissenyats per a diversos sistemes operatius, aquesta eina es pot instal·lar a Docker i a qualsevol sistema que tingui un JRE (Java Runtime Environment).

Els desenvolupadors de Jenkins han creat un altre projecte, Jenkins X, que està dissenyat per funcionar en un entorn Kubernetes. Jenkins X integra Helm, Jenkins CI/CD Server, Kubernetes i altres eines per crear canalitzacions CI/CD que segueixen les millors pràctiques de DevOps. Per exemple, GitOps s'utilitza aquí.

Al tresor dels avantatges de Jenkins es pot afegir el fet que els seus guions estan molt ben estructurats, comprensibles i fàcils de llegir. L'equip de Jenkins ha creat uns 1000 connectors que tenen com a objectiu organitzar la interacció de Jenkins amb una gran varietat de tecnologies. Els scripts poden utilitzar sistemes d'autenticació, que, per exemple, us permeten connectar-vos a diversos sistemes tancats.

Durant l'operació del gasoducte Jenkins, podeu observar què passa a cada pas, tant si determinades etapes de treball s'han completat amb èxit com si no. Tot això es pot veure, però, sense utilitzar una determinada interfície gràfica, però utilitzant les capacitats del terminal.

Característiques de Jenkins

Entre les característiques conegudes de Jenkins hi ha la facilitat de configuració, un alt nivell d'automatització de diverses operacions i una excel·lent documentació. Si parlem de resoldre tasques de DevOps, aquí Jenkins es considera una eina molt fiable que, per regla general, no té sentit supervisar de prop tot el procés de processament del projecte. Aquest no és el cas d'altres eines CI/CD. Parlem d'algunes de les característiques més importants de Jenkins.

▍1. Suport gratuït, de codi obert i multiplataforma

Jenkins es pot executar en plataformes macOS, Windows i Linux. També pot funcionar en un entorn Docker, que us permet organitzar una execució uniforme i ràpida de tasques automatitzades. Aquesta eina també es pot executar com a servlet en contenidors habilitats per Java com Apache Tomcat i GlassFish. Instal·lació de Jenkins qualitativament documentat.

▍2. Ecosistema de connectors desenvolupat

L'ecosistema de connectors de Jenkins sembla ser molt més madur que els ecosistemes de connectors d'altres eines de CI/CD. Actualment hi ha més de 1500 connectors per a Jenkins. Aquests complements estan destinats a resoldre una àmplia gamma de tasques, amb la seva ajuda podeu automatitzar una varietat de projectes. La riquesa de connectors gratuïts per triar significa que si utilitzeu Jenkins, no haureu de comprar connectors de pagament cars. Hi ha una possibilitat integració Jenkins amb moltes eines DevOps.

▍3. Fàcil instal·lació i configuració

Jenkins és bastant fàcil d'instal·lar i configurar. Al mateix temps, el procés d'actualització del sistema també és molt convenient. Aquí, de nou, val la pena esmentar la qualitat de la documentació, ja que en ella podeu trobar respostes a diverses preguntes relacionades amb la instal·lació i configuració de Jenkins.

▍4. Comunitat amigable

Com ja s'ha esmentat, Jenkins és un projecte de codi obert, l'ecosistema del qual inclou una gran quantitat de connectors. Una gran comunitat d'usuaris i desenvolupadors s'ha desenvolupat al voltant de Jenkins per ajudar a desenvolupar el projecte. La comunitat és un dels factors que impulsa el desenvolupament de Jenkins.

▍5. Disponibilitat de l'API REST

Mentre treballeu amb Jenkins, podeu utilitzar l'API REST, que amplia les capacitats del sistema. L'API per a l'accés remot al sistema es presenta en tres versions: XML, JSON amb suport JSONP, Python. aquí està Pàgina de documentació que inclou detalls sobre com treballar amb l'API REST de Jenkins.

▍6. Suport a l'execució paral·lela de tasques

Jenkins admet la paral·lelització de tasques DevOps. Es pot integrar fàcilment amb eines rellevants i rebre notificacions sobre els resultats de les tasques. Les proves de codi es poden accelerar organitzant una construcció paral·lela del projecte utilitzant diferents màquines virtuals.

▍7. Suport al treball en entorns distribuïts

Jenkins us permet organitzar compilacions distribuïdes mitjançant diversos ordinadors. Aquesta característica és aplicable en projectes grans i utilitza un esquema de treball, segons el qual hi ha un servidor Jenkins mestre i diverses màquines esclaves. Les màquines esclaves també es poden utilitzar en situacions en què és necessari organitzar la prova d'un projecte en diferents entorns. Aquestes característiques diferencien a Jenkins d'altres projectes similars.

Introducció a GitLab

Batalla de Jenkins i GitLab CI/CD
GitLab CI/CD es pot anomenar una de les eines DevOps més noves i estimades. Aquesta eina gratuïta de codi obert està integrada al sistema de control de versions de GitLab. La plataforma GitLab té una versió comunitària, admet la gestió de dipòsits, eines de seguiment de problemes, organització de revisió de codi, mecanismes orientats a la documentació. Les empreses poden instal·lar GitLab localment, enllaçant-lo a Active Directory i servidors LDAP per a l'autorització i autenticació segura dels usuaris.

aquí està Un vídeo tutorial per ajudar-vos a aprendre a crear canalitzacions CI/CD mitjançant les capacitats CI/CD de GitLab.

GitLab CI/CD es va publicar originalment com a projecte autònom, però el 2015 aquest conjunt d'eines es va integrar a GitLab 8.0. Un sol servidor GitLab CI/CD pot suportar més de 25000 usuaris. A partir d'aquests servidors, podeu crear sistemes d'alta disponibilitat.

GitLab CI/CD i el projecte principal de GitLab estan escrits en Ruby and Go. Es publiquen sota la llicència MIT. GitLab CI/CD, a més de les característiques habituals de les eines CI/CD, també admet funcions addicionals relacionades, per exemple, amb la programació del treball.

Integrar GitLab CI/CD en un projecte és molt fàcil. Quan s'utilitza GitLab CI/CD, el procés de processament del codi del projecte es divideix en etapes, cadascuna de les quals pot consistir en diverses tasques realitzades en un ordre determinat. Les tasques es poden ajustar.

Les tasques es poden executar en paral·lel. Després de configurar la seqüència d'etapes i tasques, el pipeline CI/CD està a punt per funcionar. Podeu controlar el seu progrés mitjançant el seguiment de l'estat de les tasques. Com a resultat, utilitzar GitLab CI / CD és molt convenient, potser més convenient que altres eines similars.

Característiques de GitLab CI/CD i GitLab

GitLab CI/CD és una de les eines DevOps més populars. El projecte es distingeix per una documentació d'alta qualitat, les seves característiques són fàcils i còmodes d'utilitzar. Si encara no esteu familiaritzat amb GitLab CI/CD, la següent llista de les característiques d'aquesta eina us donarà una idea general del que podeu esperar d'ella. Cal tenir en compte que moltes d'aquestes característiques estan relacionades amb la pròpia plataforma GitLab, en la qual està integrat GitLab CI/CD.

▍1. Popularitat

GitLab CI/CD és una eina relativament nova que ha trobat un ús generalitzat. GitLab CI/CD s'ha convertit lentament en una eina CI/CD molt popular que s'utilitza per a proves automatitzades i desplegament de programari. És senzill de configurar. També és una eina CI/CD gratuïta integrada a la plataforma GitLab.

▍2. Suport per a GitLab Pages i Jekyll

Jekyll és un generador de llocs estàtic que es pot utilitzar dins del sistema de pàgines GitLab per crear llocs basats en repositoris GitLab. El sistema pren els materials d'origen i genera un lloc estàtic ja fet a partir d'ells. Podeu controlar l'aparença i les característiques d'aquests llocs editant el fitxer _config.yml, utilitzat per Jekyll.

▍3. Capacitat de planificació de projectes

Gràcies a la capacitat de planificar les etapes dels projectes, augmenta la comoditat del seguiment dels problemes i dels seus grups. Això permet gestionar l'organització del treball en projectes, planificar la seva implementació en una data concreta.

▍4. Escalat automàtic de corredors CI

Gràcies a l'escalat automàtic dels corredors encarregats de realitzar tasques específiques, podeu estalviar molt en el cost del lloguer de capacitats del servidor. Això és molt important, sobretot quan es tracta d'entorns on els projectes es posen a prova en paral·lel. A més, això és important per a projectes grans que consisteixen en diversos dipòsits.

▍5. Eines de seguiment de problemes

Les potents capacitats de seguiment de problemes de GitLab han portat a molts projectes de codi obert a utilitzar la plataforma. GitLab CI/CD permet fer proves paral·leles de diferents branques de codi. Els resultats de les proves s'analitzen convenientment a la interfície del sistema. Això diferencia GitLab CI/CD de Jenkins.

▍6. Restringir l'accés als repositoris

La plataforma GitLab admet restringir l'accés als repositoris. Per exemple, a aquells que col·laboren en un projecte en un repositori se'ls pot assignar els permisos adequats als seus rols. Això és especialment cert per als projectes corporatius.

▍7. Suport comunitari actiu

Al voltant de GitLab s'ha desenvolupat una comunitat activa, que contribueix al desenvolupament d'aquesta plataforma i les seves eines, en particular, GitLab CI/CD. La integració profunda de GitLab CI/CD i GitLab, entre altres coses, fa que sigui fàcil trobar respostes a les preguntes que sorgeixen quan es treballa amb GitLab CI/CD.

▍8. Suport per a diversos sistemes de control de versions

GitLab CI/CD és un sistema que pot funcionar amb més que codi allotjat als repositoris de GitLab. Per exemple, el codi es pot emmagatzemar en un dipòsit de GitHub i el pipeline CI/CD es pot organitzar sobre la base de GitLab mitjançant GitLab CI/CD.

Comparació de Jenkins i GitLab CI/CD

Jenkins i GitLab CI/CD són eines molt bones, ambdues capaces de fer que el pipeline CI/CD funcioni sense problemes. Però si els compares, resulta que, tot i que són semblants en molts aspectes, es diferencien entre ells en alguns aspectes.

Caracterització
Jenkins
GitLab CI/CD

Codi obert o codi tancat
codi obert
codi obert

Instal · lació
Obligatori.
No és necessari, ja que és una característica integrada de la plataforma GitLab.

Característiques úniques
Suport de connectors.
Integració profunda en el sistema de control de versions.

suport
Absent.
Disponible.

Instal·lació i configuració
Les dificultats no causen
Les dificultats no causen

Autodesplegament del sistema
Aquesta és l'única manera d'utilitzar el sistema.
Admet.

Creació de pipelines CI/CD
Compatible amb Jenkins Pipeline.
Admet.

Supervisió del rendiment de l'aplicació
Absent.
Disponible.

Ecosistema
Hi ha més de 1000 connectors.
El sistema s'està desenvolupant dins de GitLab.

API
Admet un sistema API avançat.
Ofereix una API per a una integració més profunda en els projectes.

Suport de JavaScript
Disponible.
Disponible.

Integració amb altres eines
S'admet la integració amb altres eines i plataformes (Slack, GitHub).
Moltes eines per a la integració amb sistemes de tercers, en particular, amb GitHub i Kubernetes.

Control de qualitat del codi
Admès: utilitzant el connector SonarQube i altres connectors.
Admet.

Diferències entre Jenkins i GitLab CI/CD

Després d'haver descrit i comparat Jenkins i GitLab CI/CD, centrem-nos en les diferències entre aquestes eines DevOps. Conèixer aquestes diferències us ajudarà a entendre aquells que prefereixen una d'aquestes eines a l'altra.

  • GitLab CI/CD pot controlar completament els repositoris Git. Estem parlant de la gestió de branques del repositori i d'altres funcions. Però Jenkins, tot i que pot funcionar amb repositoris, no els dóna el mateix nivell de control que GitLab CI/CD.
  • Jenkins és un projecte de codi obert gratuït. Qui l'escull la desplega de manera independent. I GitLab CI / CD està inclòs a la plataforma GitLab, aquesta és una solució clau en mà.
  • GitLab CI/CD admet eines avançades de gestió de tasques que funcionen a nivell de projecte. Aquest costat de Jenkins està menys desenvolupat.

Jenkins i GitLab CI/CD: punts forts i febles

Ara teniu alguna idea sobre Jenkins i GitLab CI/CD. Ara, per familiaritzar-vos encara millor amb aquestes eines, fem una ullada als seus punts forts i febles. Suposem que ja heu decidit quina eina necessiteu. Amb sort, aquesta secció us permetrà posar-vos a prova.

▍Els punts forts de Jenkins

  • Un gran nombre de connectors.
  • Control total sobre la instal·lació de l'eina.
  • Depuració senzilla de corredors.
  • Fàcil configuració de nodes.
  • Fàcil desplegament de codi.
  • Molt bon sistema de gestió de credencials.
  • Flexibilitat i versatilitat.
  • Suport per a diversos llenguatges de programació.
  • El sistema és comprensible a nivell intuïtiu.

▍Debilitats de Jenkins

  • Els connectors poden ser complicats d'utilitzar.
  • Quan utilitzeu Jenkins en projectes petits, el temps necessari per configurar-lo vosaltres mateixos pot ser excessivament gran.
  • Manca d'informació analítica general sobre les cadenes CI/CD.

▍Puntos forts de GitLab CI/CD

  • Bona integració amb Docker.
  • Escalat senzill de corredors.
  • Execució paral·lela de tasques que formen part de les etapes del pipeline CI/CD.
  • Ús del model de gràfics acíclics dirigits en establir relacions de tasques.
  • Alt nivell d'escalabilitat a causa de la possibilitat d'execució paral·lela de corredors.
  • Facilitat per afegir tasques.
  • Resolució senzilla de conflictes.
  • Sistema de seguretat fiable.

▍Debilitats de GitLab CI/CD

  • Per a cada tasca, heu de descriure i carregar/descarregar artefactes.
  • No podeu provar els resultats de la fusió de branques abans que es fusionin realment.
  • Quan es descriuen les etapes del pipeline CI/CD, encara no és possible distingir-hi les etapes individuals.

Resultats de

Tant Jenkins com GitLab CI/CD tenen punts forts i febles. La resposta a la pregunta de què triar depèn de les necessitats i característiques d'un projecte concret. Cadascuna de les eines CI/CD revisades avui té certes característiques, tot i que aquestes eines es van crear per resoldre el mateix problema. Al mateix temps, Jenkins és una eina autònoma i GitLab CI / CD forma part d'una plataforma dissenyada per col·laborar en codi.

A l'hora de triar un sistema CI/CD, a més de les seves capacitats, val la pena tenir en compte els costos que hi poden estar associats i amb què estan acostumats a treballar exactament els enginyers de DevOps que donen suport al projecte.

Quines eines CI/CD fas servir?

Batalla de Jenkins i GitLab CI/CD

Batalla de Jenkins i GitLab CI/CD

Font: www.habr.com

Afegeix comentari