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.
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
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
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.
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
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
▍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
▍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.
▍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
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?
Fonte: www.habr.com