Batalha de Jenkins e GitLab CI / CD

Na última década, avanços significativos foram feitos no desenvolvimento de ferramentas de Integração Contínua (CI) e Entrega Contínua (CD). O desenvolvimento de tecnologias para integração de desenvolvimento e operação de software (Operações de Desenvolvimento, DevOps) levou a um rápido aumento na demanda por ferramentas de CI / CD. As soluções existentes estão em constante aperfeiçoamento, buscando acompanhar os tempos, suas novas versões são lançadas, no mundo da garantia de qualidade de software (QA), muitos novos produtos estão aparecendo constantemente. Com tantas opções de escolha, escolher a caixa de ferramentas certa não é uma tarefa fácil.







Dentre todas as ferramentas CI / CD existentes, existem dois projetos aos quais definitivamente vale a pena prestar atenção se você estiver procurando algo nesta área. Estamos falando do Jenkins e da ferramenta GitLab CI / CD, que faz parte da plataforma GitLab. Jenkins tem mais de 16.000 estrelas no GitHub. O repositório GitLab em gitlab.com tem pouco mais de 2.000 estrelas. Se compararmos a popularidade dos repositórios, descobrimos que o Jenkins obteve 8 vezes mais estrelas do que a plataforma, que inclui o GitLab CI / CD. Mas, ao escolher uma ferramenta de CI / CD, esse está longe de ser o único indicador que vale a pena prestar atenção. Existem muitos outros, e isso explica por que em muitas comparações Jenkins e GitLab CI / CD são muito próximos um do outro.



Veja, por exemplo, os dados da plataforma G2, que acumula avaliações sobre uma ampla variedade de produtos e avaliações que os usuários lhes dão. Jenkins tem uma classificação média de 4,3 estrelas baseada em 288 comentários. E sobre o GitLab aqui tem 270 avaliações, a avaliação média deste instrumento é 4,4 estrelas. Não estaremos errados em afirmar que Jenkins e GitLab CI / CD estão competindo entre si em termos iguais. É interessante notar que o projeto Jenkins surgiu em 2011 e desde então tem sido uma ferramenta favorita dos testadores. Mas, ao mesmo tempo, o projeto GitLab CI / CD, lançado em 2014, assumiu posições muito elevadas, graças às capacidades avançadas oferecidas por esta plataforma.



Se falarmos sobre a popularidade do Jenkins em comparação com outras plataformas semelhantes, notamos que, tendo publicado um artigo onde as plataformas Travis CI e Jenkins foram comparadas, organizamos uma pesquisa. Participaram 85 usuários. Os entrevistados foram convidados a escolher a ferramenta de CI / CD que mais gostam. 79% escolheram Jenkins, 5% escolheram Travis CI e 16% indicaram que preferem outras ferramentas.





Resultados da pesquisa



Entre outras ferramentas de CI / CD, GitLab CI / CD foi mencionado com mais frequência.



Se você leva DevOps a sério, precisa selecionar cuidadosamente as ferramentas apropriadas, levando em consideração as especificações do projeto, seu orçamento e outros requisitos. Para ajudá-lo a fazer a escolha certa, vamos analisar o Jenkins e o GitLab CI / CD. Espero que isso o ajude a fazer a escolha certa.



Apresentando Jenkins





Jenkins é uma ferramenta de CI / CD bem conhecida e flexível, projetada para automatizar uma variedade de tarefas relacionadas a projetos de software. Jenkins foi escrito inteiramente em Java e lançado sob a licença do MIT. Ele possui um poderoso conjunto de recursos destinados a automatizar tarefas associadas à construção, teste, implantação, integração e lançamento de software. Essa ferramenta pode ser usada em vários sistemas operacionais. Isso inclui macOS, Windows e muitas distribuições de Linux, como OpenSUSE, Ubuntu e Red Hat. Existem pacotes de instalação do Jenkins projetados para diferentes sistemas operacionais, esta ferramenta pode ser instalada no Docker e em qualquer sistema que possua um JRE (Java Runtime Environment).



Os desenvolvedores do Jenkins criaram outro projeto, Jenkins X, projetado para ser executado no Kubernetes. Jenkins X integra Helm, servidor de CI / CD Jenkins, Kubernetes e outras ferramentas para construir pipelines de CI / CD que seguem as práticas recomendadas de DevOps. Por exemplo, ele usa GitOps aqui.



Pode-se adicionar ao banco de vantagens do Jenkins o fato de seus scripts serem muito bem estruturados, compreensíveis e fáceis de ler. A equipe do Jenkins criou cerca de 1000 plug-ins que visam organizar a interação do Jenkins com uma variedade de tecnologias. Em scripts, você pode usar sistemas de autenticação, que, por exemplo, permite que você se conecte a vários sistemas fechados.



No decorrer do pipeline do Jenkins, você pode observar o que acontece em cada etapa, se certas etapas do trabalho foram concluídas com êxito ou não. Você pode observar tudo isso, no entanto, sem usar uma determinada interface gráfica, mas usando os recursos do terminal.



Recursos do Jenkins



Os recursos mais conhecidos do Jenkins incluem facilidade de configuração, alto nível de automação de várias operações e documentação excelente. Se falamos em resolver tarefas de DevOps, o Jenkins é considerado uma ferramenta muito confiável, que, via de regra, não faz sentido acompanhar de perto todo o processo de processamento do projeto. Este não é o caso com outras ferramentas de CI / CD. Vamos falar sobre alguns dos recursos mais importantes do Jenkins.



▍1. Suporte gratuito, de código aberto e multiplataforma



Jenkins pode ser executado em plataformas macOS, Windows e Linux. Ele também pode funcionar no ambiente Docker, o que permite organizar a execução uniforme e rápida de tarefas automatizadas. Essa ferramenta também pode ser executada como um servlet em contêineres habilitados para Java, como Apache Tomcat e GlassFish. A instalação do Jenkins está bem documentada .



▍2. Ecossistema desenvolvido de plug-ins



O ecossistema de plug-ins do Jenkins parece muito mais maduro do que os ecossistemas de plug-ins de outras ferramentas de CI / CD. Existem atualmente mais de 1500 plug-ins do Jenkins. Esses plug-ins visam resolver uma ampla gama de tarefas, com a ajuda deles você pode automatizar uma variedade de projetos. A abundância de plug-ins gratuitos para escolher significa que alguém que usa Jenkins não tem a necessidade extrema de comprar plug-ins pagos caros. O Jenkins pode ser integrado a muitas ferramentas DevOps.



▍3. Fácil instalação e configuração



Jenkins é bastante fácil de instalar e configurar. Além disso, o processo de atualização do sistema também é muito conveniente. Aqui, novamente, vale a pena mencionar a qualidade da documentação, pois nela você pode encontrar respostas para uma variedade de questões relacionadas à instalação e configuração do Jenkins.



▍4. Comunidade amigável



Como já mencionamos, Jenkins é um projeto de código aberto, cujo ecossistema inclui um grande número de plug-ins. Uma grande comunidade de usuários e desenvolvedores formou-se em torno do Jenkins, ajudando a desenvolver o projeto. A comunidade é um dos fatores que impulsionam o desenvolvimento de Jenkins.



▍5. Disponibilidade da API REST



Enquanto trabalha com o Jenkins, você pode usar a API REST, que estende os recursos do sistema. A API para acesso remoto ao sistema é apresentada em três versões: XML, JSON com suporte JSONP, Python. Aqui está a página de documentação que revela os detalhes de como trabalhar com a API REST Jenkins.



▍6. Suporte a tarefas paralelas



Jenkins oferece suporte à paralelização de tarefas DevOps. Ele pode ser facilmente integrado com ferramentas relacionadas e ser notificado sobre o progresso da tarefa. O teste de seu código pode ser acelerado organizando uma construção paralela do projeto usando diferentes máquinas virtuais.



▍7. Suporte para trabalhar em ambientes distribuídos



Jenkins permite que você organize construções distribuídas usando vários computadores. Este recurso é aplicável em grandes projetos e usa um esquema de trabalho, segundo o qual existe um servidor Jenkins principal e várias máquinas escravas. As máquinas escravas também podem ser usadas em situações em que você precisa organizar o teste de um projeto em diferentes ambientes. Esses recursos distinguem o Jenkins de outros projetos semelhantes.



Apresentando GitLab





GitLab CI / CD é uma das ferramentas mais novas e mais apreciadas pelos engenheiros de DevOps. Esta ferramenta de código aberto gratuita é integrada ao sistema de controle de versão GitLab. A plataforma GitLab possui versão para comunidade, suporta gerenciamento de repositórios, ferramentas para rastreamento de problemas, organização de revisões de código, mecanismos voltados para a criação de documentação. As empresas podem instalar o GitLab localmente, vinculando-o aos servidores Active Directory e LDAP para autorização e autenticação segura do usuário.



Aqui está um tutorial em vídeo para ajudá-lo a aprender como criar pipelines de CI / CD usando os recursos de CI / CD do GitLab.



O GitLab CI / CD foi originalmente lançado como um projeto independente, mas em 2015 esse kit de ferramentas foi integrado ao GitLab 8.0. Um servidor GitLab CI / CD separado pode oferecer suporte a mais de 25.000 usuários. Com base nesses servidores, você pode criar sistemas com alta disponibilidade.



GitLab CI / CD e o projeto GitLab principal são escritos em Ruby and Go. Eles são lançados sob a licença do MIT. GitLab CI / CD, além dos recursos usuais de ferramentas CI / CD, oferece suporte a recursos adicionais, como agendamento de trabalho.



É muito fácil integrar GitLab CI / CD em um projeto. Ao usar o GitLab CI / CD, o processo de processamento do código do projeto é dividido em estágios, cada um dos quais pode consistir em várias tarefas realizadas em uma ordem específica. As tarefas se prestam a um ajuste fino.



As tarefas podem ser executadas em paralelo. Depois de configurar a sequência de etapas e tarefas, o pipeline de CI / CD está pronto para funcionar. Seu progresso pode ser monitorado monitorando o status das tarefas. Como resultado, usar GitLab CI / CD é muito conveniente, talvez mais conveniente do que outras ferramentas semelhantes.



Recursos do GitLab CI / CD e GitLab



GitLab CI / CD é uma das ferramentas DevOps mais populares. O projeto se distingue pela documentação de alta qualidade, seus recursos são fáceis e convenientes de usar. Se você ainda não está familiarizado com o GitLab CI / CD, a seguinte lista de recursos desta ferramenta lhe dará uma ideia geral do que esperar dela. Deve-se observar que muitos desses recursos estão relacionados à própria plataforma GitLab, na qual o GitLab CI / CD está integrado.



▍1. Popularidade



GitLab CI / CD é uma ferramenta relativamente nova que encontrou uso generalizado. O GitLab CI / CD gradualmente se tornou uma ferramenta CI / CD extremamente popular usada para teste e implantação de software automatizado. É fácil de personalizar. Também é uma ferramenta CI / CD gratuita incorporada à plataforma GitLab.



▍2. Suporte a páginas GitLab e Jekyll



Jekyll é um gerador de sites estáticos que pode ser usado dentro do sistema GitLab Pages para criar sites baseados em repositórios GitLab. O sistema pega os materiais de origem e gera um site estático pronto com base neles. Você pode controlar a aparência desses sites editando o arquivo _config.ymlusado por Jekyll.



▍3. Capacidades de planejamento de projeto



A capacidade de planejar marcos do projeto torna mais fácil rastrear questões e grupos de problemas. Isso permite que você gerencie a organização do trabalho em projetos, planeje sua implementação para uma data específica.



▍4. Escalonamento automático de corredores de CI



Graças ao escalonamento automático dos corredores responsáveis ​​pela execução de tarefas específicas, você pode economizar seriamente no custo de alugar a capacidade do servidor. Isso é muito importante, especialmente quando se trata de ambientes onde os projetos são testados em paralelo. Também é importante para grandes projetos com vários repositórios.



▍5. Ferramentas de rastreamento de problemas



Os poderosos recursos de rastreamento de problemas do GitLab levaram a plataforma a ser usada por muitos projetos de código aberto. O GitLab CI / CD permite o teste paralelo de diferentes ramos do código. É conveniente analisar os resultados do teste na interface do sistema. Isso torna o GitLab CI / CD diferente do Jenkins.



▍6. Restringindo o acesso aos repositórios



A plataforma GitLab oferece suporte à restrição de acesso a repositórios. Por exemplo, aqueles que colaboram em um projeto em um repositório podem receber direitos que correspondem às suas funções. Isso é especialmente verdadeiro para projetos corporativos.



▍7. Apoio comunitário ativo



Uma comunidade ativa se desenvolveu em torno do GitLab, o que contribui para o desenvolvimento desta plataforma e de suas ferramentas, em particular - GitLab CI / CD. A integração profunda do GitLab CI / CD e GitLab, entre outras coisas, torna mais fácil encontrar respostas para as perguntas que surgem ao trabalhar com o GitLab CI / CD.



▍8. Suporte para trabalhar com vários sistemas de controle de versão



GitLab CI / CD é um sistema que pode trabalhar com mais do que apenas código hospedado em repositórios GitLab. Por exemplo, o código pode ser armazenado em um repositório GitHub e um pipeline de CI / CD pode ser organizado no GitLab usando o GitLab CI / CD.



Comparação entre Jenkins e GitLab CI / CD



Jenkins e GitLab CI / CD são ferramentas muito boas, cada uma delas capaz de fazer o pipeline de CI / CD funcionar corretamente. Mas, se você compará-los, descobre-se que eles, embora sejam semelhantes em muitos aspectos, diferem uns dos outros de alguma forma.

Característica Jenkins GitLab CI/CD
. , — GitLab.
. .
. .
— . .
CI/CD- , Jenkins Pipeline. .
. .
1000 . GitLab.
API API. API .
JavaScript . .
(Slack, GitHub). Muitas ferramentas para integração com sistemas de terceiros, em particular - com GitHub e Kubernetes.
Controle de qualidade de código Suportado - com o plugin SonarQube e outros plugins. Suportado.


Diferenças entre Jenkins e GitLab CI / CD



Tendo descrito e comparado o Jenkins e o GitLab CI / CD, vamos nos concentrar nas diferenças entre essas ferramentas DevOps. Saber sobre essas diferenças ajudará a entender quem prefere uma dessas ferramentas.



  • O GitLab CI / CD pode controlar totalmente os repositórios Git. Estamos falando sobre o gerenciamento de ramos do repositório e alguns outros recursos. Mas o Jenkins, embora saiba trabalhar com repositórios, não oferece o mesmo nível de controle sobre eles que o GitLab CI / CD.
  • Jenkins é um projeto de código aberto gratuito. Quem quer que o escolha, o desdobra independentemente. E o GitLab CI / CD está incluído na plataforma GitLab, é uma solução pronta.
  • GitLab CI / CD oferece suporte ao gerenciamento avançado de tarefas em nível de projeto. Esse lado do Jenkins é menos desenvolvido.


Jenkins e GitLab CI / CD: pontos fortes e fracos



Agora você tem algum conhecimento sobre Jenkins e GitLab CI / CD. Agora, para que você se familiarize ainda mais com essas ferramentas, vamos examinar seus pontos fortes e fracos. Presumimos que você já tenha tomado uma decisão sobre qual ferramenta precisa. Esperançosamente, esta seção permitirá que você teste a si mesmo.



▍ Pontos fortes do Jenkins



  • Um grande número de plug-ins.
  • Controle total sobre a instalação da ferramenta.
  • Depuração fácil de corredores.
  • Configuração de nó fácil.
  • Implementação de código fácil.
  • Sistema de gerenciamento de credenciais muito bom.
  • Flexibilidade e versatilidade.
  • Suporte para várias linguagens de programação.
  • O sistema é intuitivo.


▍ Fraquezas do Jenkins



  • .
  • Jenkins , , .
  • CI/CD-.


▍ GitLab CI/CD



  • Docker.
  • .
  • , CI/CD-.
  • .
  • .
  • .
  • .
  • .


▍ GitLab CI/CD



  • / .
  • .
  • CI/CD- .




Jenkins e GitLab CI / CD têm pontos fortes e fracos. A resposta à pergunta sobre o que escolher depende das necessidades e características de um projeto específico. Cada uma das ferramentas CI / CD revisadas hoje difere em certas peculiaridades, embora essas ferramentas tenham sido criadas para resolver o mesmo problema. Dito isso, o Jenkins é uma ferramenta autônoma, enquanto o GitLab CI / CD faz parte de uma estrutura para colaboração de código.



Ao escolher um sistema CI / CD, além de seus recursos, vale a pena levar em consideração os custos que podem estar associados a ele e com o que os engenheiros de DevOps que dão suporte ao projeto estão acostumados a trabalhar.



Quais ferramentas de CI / CD você usa?










All Articles