Batalha de Jenkins e GitLab CI/CD

Na última década, avanços significativos foram feitos no desenvolvimento de ferramentas para integração contínua (Continuous Integration, CI) e implantação contínua (Continuous Delivery, CD). O desenvolvimento de tecnologias para integração de desenvolvimento e operação de software (Development Operations, DevOps) levou a um rápido aumento na demanda por ferramentas de CI/CD. As soluções existentes são constantemente melhoradas, tentando acompanhar os tempos, suas novas versões são lançadas, no mundo do software de garantia de qualidade (Quality Assurance, QA), muitos novos produtos estão constantemente aparecendo. Com tantas opções, escolher a ferramenta certa não é uma tarefa fácil.

Batalha de Jenkins e GitLab CI/CD

Dentre todas as ferramentas de CI/CD existentes, existem dois projetos que definitivamente valem a atenção de quem busca algo nesta área. Estamos falando do Jenkins e da ferramenta GitLab CI/CD, que faz parte da plataforma GitLab. Jenkins tem mais de 16000 estrelas no GitHub. O repositório GitLab em gitlab.com pontuou um pouco mais 2000 estrelas. Se compararmos a popularidade dos repositórios, descobrimos que 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 não é o único indicador ao qual você deve prestar atenção. Existem muitos outros, e isso explica porque, 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 análises de uma ampla variedade de produtos e as avaliações que os usuários dão a eles. Aqui está a classificação média Jenkins, com base em 288 avaliações, é de 4,3 estrelas. ai ai GitLab existem 270 avaliações, a classificação média para esta ferramenta é de 4,4 estrelas. Não nos enganaremos ao dizer que Jenkins e GitLab CI / CD competem entre si em igualdade de condições. É interessante notar que o projeto Jenkins surgiu em 2011 e desde então tem sido a ferramenta preferida dos testadores. Mas, ao mesmo tempo, o projeto GitLab CI / CD, lançado em 2014, conquistou sua posição, muito alta, graças aos recursos avançados oferecidos por esta plataforma.

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

Batalha de Jenkins e GitLab CI/CD
Результаты опроса

Entre outras ferramentas de CI/CD, o 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 especificidades do projeto, seu orçamento e outros requisitos. Para ajudá-lo a fazer a escolha certa, analisaremos o Jenkins e o GitLab CI/CD. Espero que isso ajude você a fazer a escolha certa.

Introdução ao Jenkins

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

Os desenvolvedores do Jenkins criaram outro projeto, o Jenkins X, projetado para funcionar em um ambiente Kubernetes. O Jenkins X integra o Helm, o servidor Jenkins CI/CD, Kubernetes e outras ferramentas para criar pipelines CI/CD que seguem as práticas recomendadas de DevOps. Por exemplo, GitOps é usado aqui.

Pode-se acrescentar ao tesouro das vantagens de Jenkins o fato de que seus scripts são muito bem estruturados, compreensíveis e fáceis de ler. A equipe do Jenkins criou cerca de 1000 plugins que visam organizar a interação do Jenkins com uma ampla variedade de tecnologias. Os scripts podem usar sistemas de autenticação, que, por exemplo, permitem que você se conecte a vários sistemas fechados.

Durante a operação do pipeline Jenkins, você pode observar o que acontece em cada etapa, se determinadas etapas do trabalho foram concluídas com sucesso ou não. Você pode assistir a tudo isso, porém, sem usar uma determinada interface gráfica, mas usando os recursos do terminal.

Características do Jenkins

Entre os recursos conhecidos do Jenkins estão a facilidade de configuração, alto nível de automação de várias operações e excelente documentação. Se falamos de resolver tarefas DevOps, então aqui Jenkins é considerado uma ferramenta muito confiável, usando a qual, via de regra, não faz sentido acompanhar de perto todo o processo de processamento do projeto. Este não é o caso de 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. Também pode funcionar em um ambiente Docker, 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. Instalação de Jenkins qualitativamente documentado.

▍2. Ecossistema de plugins desenvolvido

O ecossistema de plugins Jenkins parece ser muito mais maduro do que os ecossistemas de plugins de outras ferramentas de CI/CD. Existem atualmente mais de 1500 plugins para Jenkins. Esses plugins visam resolver uma ampla gama de tarefas, com a ajuda deles você pode automatizar uma variedade de projetos. A variedade de plug-ins gratuitos para escolher significa que, se você estiver usando o Jenkins, não precisará comprar plug-ins pagos caros. Existe uma possibilidade integração Jenkins com muitas ferramentas DevOps.

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

Jenkins é bastante fácil de instalar e configurar. Ao mesmo tempo, o processo de atualização do sistema também é muito conveniente. Aqui, novamente, vale ressaltar a qualidade da documentação, pois nela você encontra respostas para diversas dúvidas relacionadas à instalação e configuração do Jenkins.

▍4. Comunidade amigável

Como já mencionado, Jenkins é um projeto de código aberto, cujo ecossistema inclui um grande número de plugins. Uma grande comunidade de usuários e desenvolvedores se desenvolveu em torno de Jenkins para ajudar a desenvolver o projeto. A comunidade é um dos fatores que impulsionam o desenvolvimento do Jenkins.

▍5. Disponibilidade da API REST

Ao trabalhar com Jenkins, você pode usar a API REST, que expande os recursos do sistema. A API para acesso remoto ao sistema é apresentada em três versões: XML, JSON com suporte a JSONP, Python. aqui é Página de documentação que cobre detalhes sobre como trabalhar com a API REST do Jenkins.

▍6. Suporte para execução paralela de tarefas

Jenkins oferece suporte à paralelização de tarefas DevOps. Ele pode ser facilmente integrado com ferramentas relevantes e receber notificações sobre os resultados das tarefas. O teste de código pode ser acelerado organizando uma compilação paralela do projeto usando diferentes máquinas virtuais.

▍7. Suporte para trabalho em ambientes distribuídos

Jenkins permite que você organize compilações distribuídas usando vários computadores. Esse recurso é aplicável em grandes projetos e utiliza um esquema de trabalho, segundo o qual existe um servidor mestre Jenkins e várias máquinas escravas. As máquinas escravas também podem ser utilizadas em situações onde é necessário organizar testes de um projeto em diferentes ambientes. Esses recursos diferenciam o Jenkins de outros projetos semelhantes.

Introdução ao GitLab

Batalha de Jenkins e GitLab CI/CD
CI / CD do GitLab pode ser chamada de uma das ferramentas DevOps mais novas e amadas. Esta ferramenta gratuita de código aberto é incorporada ao sistema de controle de versão do GitLab. A plataforma GitLab possui uma versão community, suporta gerenciamento de repositório, ferramentas de rastreamento de problemas, organização de revisão de código, mecanismos orientados à documentação. As empresas podem instalar o GitLab localmente, vinculando-o aos servidores Active Directory e LDAP para autorização e autenticação seguras do usuário.

aqui é 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 lançado originalmente como um projeto autônomo, mas em 2015 esse conjunto de ferramentas foi integrado ao GitLab 8.0. Um único servidor GitLab CI/CD pode suportar mais de 25000 usuários. Com base nesses servidores, você pode criar sistemas altamente disponíveis.

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

Integrar o GitLab CI/CD em um projeto é muito fácil. 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 executadas em uma determinada ordem. As tarefas podem ser ajustadas.

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

Recursos do GitLab CI/CD e GitLab

O 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 lista a seguir dos recursos desta ferramenta lhe dará uma ideia geral do que você pode esperar dela. De referir que muitas destas funcionalidades estão relacionadas com a própria plataforma GitLab, na qual o GitLab CI/CD está integrado.

▍1. Popularidade

O GitLab CI/CD é uma ferramenta relativamente nova que encontrou uso generalizado. O GitLab CI/CD tornou-se lentamente uma ferramenta de CI/CD extremamente popular usada para testes automatizados e implantação de software. É simples de configurar. Também é uma ferramenta gratuita de CI/CD incorporada à plataforma GitLab.

▍2. Suporte para páginas do GitLab e Jekyll

Jekyll é um gerador de site estático 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 e os recursos de tais sites editando o arquivo _config.yml, usado por Jekyll.

▍3. Recursos de planejamento de projetos

Graças à capacidade de planejar as etapas dos projetos, aumenta a comodidade de acompanhar os problemas e seus grupos. Isso permite que você gerencie a organização do trabalho em projetos, planeje sua implementação em uma data específica.

▍4. Dimensionamento automático de executores de CI

Graças ao dimensionamento automático de executores responsáveis ​​pela execução de tarefas específicas, você pode economizar muito no custo de aluguel de capacidades de servidor. Isso é muito importante, principalmente quando se trata de ambientes onde os projetos são testados em paralelo. Além disso, isso é importante para grandes projetos que consistem em vários repositórios.

▍5. Ferramentas de rastreamento de problemas

Os poderosos recursos de rastreamento de problemas do GitLab levaram muitos projetos de código aberto a usar a plataforma. O GitLab CI/CD permite testes paralelos de diferentes ramificações de código. Os resultados dos testes são convenientemente analisados ​​na interface do sistema. Isso diferencia o GitLab CI/CD do Jenkins.

▍6. Restringindo o acesso a 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 permissões apropriadas para suas funções. Isso é especialmente verdadeiro para projetos corporativos.

▍7. Suporte ativo da comunidade

Em torno do GitLab desenvolveu-se uma comunidade ativa, que contribui para o desenvolvimento desta plataforma e das suas ferramentas, nomeadamente, GitLab CI/CD. A integração profunda do GitLab CI/CD e do GitLab, entre outras coisas, facilita encontrar respostas para as perguntas que surgem ao trabalhar com o GitLab CI/CD.

▍8. Suporte para 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 o pipeline CI/CD pode ser organizado com base 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, ambas capazes de fazer o pipeline de CI/CD funcionar sem problemas. Mas se os compararmos, veremos que, embora sejam semelhantes em muitos aspectos, diferem entre si em alguns aspectos.

Caracterização
Jenkins
CI / CD do GitLab

Código aberto ou código fechado
Código aberto
Código aberto

Instalação
Obrigatório.
Não é necessário, pois é um recurso integrado da plataforma GitLab.

Características únicas
Suporte a plug-ins.
Integração profunda no sistema de controle de versão.

apoio
Está faltando.
Há sim.

Instalação e configuração
Dificuldades não causam
Dificuldades não causam

Autoimplantação do sistema
Esta é a única maneira de usar o sistema.
Suportado.

Criando pipelines de CI/CD
Suportado, usando Jenkins Pipeline.
Suportado.

Monitoramento de desempenho de aplicativos
Está faltando.
Há sim.

Ecossistema
Existem mais de 1000 plugins.
O sistema está sendo desenvolvido dentro do GitLab.

API
Suporta um sistema API avançado.
Oferece uma API para integração mais profunda em projetos.

Suporte a JavaScript
Há sim.
Há sim.

Integração com outras ferramentas
A integração com outras ferramentas e plataformas é suportada (Slack, GitHub).
Muitas ferramentas para integração com sistemas de terceiros, em particular - com GitHub e Kubernetes.

Controle de qualidade do código
Suportado - usando o plugin SonarQube e outros plugins.
Suportado.

Diferenças entre Jenkins e GitLab CI/CD

Tendo descrito e comparado Jenkins e GitLab CI/CD, vamos nos concentrar nas diferenças entre essas ferramentas DevOps. Conhecer essas diferenças ajudará você a entender quem prefere uma dessas ferramentas em detrimento da outra.

  • O GitLab CI/CD pode controlar totalmente os repositórios Git. Estamos falando sobre o gerenciamento de ramificações do repositório e alguns outros recursos. Mas o Jenkins, embora possa trabalhar com repositórios, não dá o mesmo nível de controle sobre eles que o GitLab CI/CD.
  • Jenkins é um projeto de código aberto gratuito. Quem o escolhe, o implanta de forma independente. E o GitLab CI / CD está incluído na plataforma GitLab, esta é uma solução chave na mão.
  • O GitLab CI/CD oferece suporte a ferramentas avançadas de gerenciamento de tarefas que funcionam no nível do projeto. Este lado de Jenkins é menos desenvolvido.

Jenkins e GitLab CI/CD: pontos fortes e fracos

Agora você tem alguma ideia sobre Jenkins e GitLab CI/CD. Agora, para você se familiarizar ainda mais com essas ferramentas, vamos dar uma olhada em seus pontos fortes e fracos. Assumimos que você já decidiu qual ferramenta precisa. Esperançosamente, esta seção permitirá que você se teste.

▍Forças de Jenkins

  • Um grande número de plugins.
  • Controle total sobre a instalação da ferramenta.
  • Depuração simples de corredores.
  • Fácil configuração do nó.
  • Implantaçã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 é compreensível em um nível intuitivo.

▍Fraquezas de Jenkins

  • Plugins podem ser complicados de usar.
  • Ao usar o Jenkins em pequenos projetos, o tempo necessário para configurá-lo sozinho pode ser excessivamente grande.
  • Falta de informações analíticas gerais sobre cadeias CI/CD.

▍Pontos fortes do GitLab CI/CD

  • Boa integração com Docker.
  • Escalonamento simples de corredores.
  • Execução paralela de tarefas que fazem parte das etapas do pipeline CI/CD.
  • Usando o modelo de gráfico acíclico direcionado ao configurar relacionamentos de tarefas.
  • Alto nível de escalabilidade devido à possibilidade de execução paralela de executores.
  • Facilidade de adicionar tarefas.
  • Resolução simples de conflitos.
  • Sistema de segurança confiável.

▍Fraquezas do GitLab CI/CD

  • Para cada tarefa, você precisa descrever e fazer upload/download de artefatos.
  • Você não pode testar os resultados da mesclagem de branches antes que eles sejam realmente mesclados.
  • Ao descrever os estágios do pipeline CI / CD, ainda não é possível destacar estágios individuais neles.

Resultados de

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 determinado projeto. Cada uma das ferramentas de CI/CD analisadas hoje tem certas características, embora essas ferramentas tenham sido criadas para resolver o mesmo problema. Ao mesmo tempo, o Jenkins é uma ferramenta autônoma e o GitLab CI/CD faz parte de uma plataforma projetada para colaboração em código.

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

Quais ferramentas de CI/CD você usa?

Batalha de Jenkins e GitLab CI/CD

Batalha de Jenkins e GitLab CI/CD

Fonte: habr.com

Adicionar um comentário