O que é Jenkins? Por que usar a ferramenta de integração contínua (CI)?

O que é Jenkins?

Jenkins é um servidor de integração contínua de código aberto escrito em Java por orquestrar uma cadeia de ações para alcançar o processo de Integração Contínua de forma automatizada. Jenkins oferece suporte ao ciclo de vida de desenvolvimento completo de software, desde a construção, teste, documentação do software, implantação e outros estágios do ciclo de vida de desenvolvimento de software.

Jenkins é um aplicativo amplamente utilizado em todo o mundo, com cerca de 300 mil instalações e crescendo a cada dia. Ao usar o Jenkins, as empresas de software podem acelerar seu processo de desenvolvimento de software, pois o Jenkins pode automatizar a construção e o teste em um ritmo rápido.

É um aplicativo baseado em servidor e requer um servidor web como o Apache Tomcat. A razão pela qual o software Jenkins se tornou tão popular é o monitoramento de tarefas repetidas que surgem durante o desenvolvimento de um projeto. Por exemplo, se sua equipe estiver desenvolvendo um projeto, Jenkins testará continuamente as construções do seu projeto e mostrará os erros nos estágios iniciais do seu desenvolvimento.

O que é Integração Contínua?

Integração contínua é um processo de integração repetida de alterações de código de vários desenvolvedores em um único projeto. O software é testado imediatamente após a confirmação do código. Com cada confirmação de código, o código é construído e testado. Se o teste for aprovado, o build será testado para implantação. Se a implantação for bem-sucedida, o código será enviado para produção.

Esta confirmação, construção, teste e implantação é um processo contínuo e daí o nome integração/implantação contínua.

Como funciona o Jenkins?

Jenkins é um aplicativo baseado em servidor e requer um servidor web como Apache Tomcat para rodar em várias plataformas como WindowsLinux, macOS, Unix, etc. Para usar Jenkins, você precisa criar pipelines que são uma série de etapas que um servidor Jenkins executará. Jenkins Continuous Integration Pipeline é um instrumento poderoso que consiste em um conjunto de ferramentas projetadas para hospedeiro, monitor, compilar e teste código ou alterações de código, como:

  • Servidor de Integração Contínua (Jenkins, Bamboo, CruiseControl, TeamCity, e outros)
  • Ferramenta de controle de origem (por exemplo, CVS, SVN, GIT, Mercurial, Perforce, ClearCase e outros)
  • Ferramenta de construção (Make, ANT, Maven, Ivy, Gradle, e outros)
  • Estrutura de testes de automação (Selenium, Appium, TestComplete, UFT e outros)

História de Jenkin

  • Kohsuke Kawaguchi, um Java desenvolvedor, trabalhando na SUN Microsystems, estava cansado de construir o código e corrigir erros repetidamente. Em 2004, criou um servidor de automação chamado Hudson que automatiza tarefas de construção e teste.
  • Em 2011, foi fundada a Oracle que era dono da Sun Microsystems teve uma disputa com a comunidade de código aberto Hudson, então eles bifurcaram o Hudson e o renomearam como Jenkins.
  • Tanto Hudson quanto Jenkins continuaram a operar de forma independente. Mas em um curto espaço de tempo, Jenkins adquiriu muitos projetos e colaboradores, enquanto Hudson permaneceu com apenas 32 projetos. Com o tempo, Jenkins se tornou mais popular e Hudson não é mais mantido.

Por que usar a Integração Contínua com Jenkins?

Algumas pessoas podem pensar que a forma antiga de desenvolver o software é a melhor. Vamos entender as vantagens do CI com Jenkins com o exemplo a seguir

Vamos imaginar que existem cerca de 10 desenvolvedores trabalhando em um repositório compartilhado. Alguns desenvolvedores concluem suas tarefas em 25 dias, enquanto outros levam 30 dias para serem concluídas.

Antes de Jenkins Depois de Jenkins
Depois que todos os desenvolvedores concluíram as tarefas de codificação atribuídas, eles costumavam enviar seu código ao mesmo tempo. Later, O build é testado e implantado.

A confirmação do código foi construída e o ciclo de teste era muito raro, e uma única construção foi feita depois de muitos dias.

O código é construído e testado assim que o desenvolvedor confirma o código. Jenkin irá construir e testar o código muitas vezes durante o dia

Se a compilação for bem-sucedida, o Jenkins implantará a origem no servidor de teste e notificará a equipe de implantação.

Se a compilação falhar, o Jenkins notificará os erros à equipe de desenvolvedores.

Como o código foi construído de uma só vez, alguns desenvolvedores precisariam esperar até que outros desenvolvedores terminassem a codificação para verificar sua construção. O código é construído imediatamente após qualquer commit do desenvolvedor.
Não é uma tarefa fácil isolar, detectar e corrigir erros de múltiplos commits. Como o código é compilado após cada commit de um único desenvolvedor, é fácil detectar qual código causou a falha na compilação
Construção de código e processo de teste são inteiramente manuais, portanto há muitas chances de falha. Processo automatizado de construção e teste, economizando tempo e reduzindo defeitos.
O código é implantado assim que todos os erros são corrigidos e testados. O código é implantado após cada construção e teste bem-sucedidos.
O ciclo de desenvolvimento é lento O ciclo de desenvolvimento é rápido. Novos recursos estão mais prontamente disponíveis para os usuários. Aumenta os lucros.

Estudo de caso real de integração contínua

Tenho certeza de que todos vocês conhecem o antigo telefone Nokia. A Nokia costumava implementar um procedimento chamado nightly build. Após vários commits de diversos desenvolvedores durante o dia, o software era construído todas as noites. Como o software era construído apenas uma vez por dia, é muito difícil isolar, identificar e corrigir os erros em uma grande base de código.

Later, eles adotaram a abordagem de integração contínua. O software foi construído e testado assim que um desenvolvedor comprometeu o código. Se algum erro for detectado, o respectivo desenvolvedor poderá corrigir rapidamente o defeito.

Estudo de caso real de integração contínua

Plug-ins Jenkins

Por padrão, Jenkins vem com um conjunto limitado de recursos. Se você deseja integrar a instalação do Jenkins com ferramentas de controle de versão como o Git, você precisa instalar plug-ins relacionados ao Git. Na verdade, para integração com ferramentas como Maven, Amazon EC2, você precisa instalar os respectivos plugins em seu Jenkins.

Plug-ins Jenkins
Integração de plug-ins no Jenkins

Vantagens de usar Jenkins

  • Jenkins está sendo gerenciado pela comunidade que é muito aberta. Todos os meses, eles realizam reuniões públicas e recebem contribuições do público para o desenvolvimento do projeto Jenkins.
  • Até o momento, cerca de 280 tickets foram fechados, e o projeto publica lançamento estável a cada três meses.
  • À medida que a tecnologia cresce, Jenkins também cresce. Até agora, Jenkins tem cerca de 320 plugins publicados em seu banco de dados de plugins. Com plug-ins, Jenkins se torna ainda mais poderoso e rico em recursos.
  • A ferramenta Jenkins também oferece suporte à arquitetura baseada em nuvem para que você possa implantar Jenkins em plataformas baseadas em nuvem.
  • A razão pela qual Jenkins se tornou popular é que ele foi criado por um desenvolvedor para desenvolvedores.

Desvantagens de usar Jenkins

Embora Jenkins seja uma ferramenta muito poderosa, ele tem suas falhas.

  • Sua interface está desatualizada e não é amigável em comparação com as tendências atuais da interface do usuário.
  • Embora o Jenkins seja amado por muitos desenvolvedores, não é tão fácil mantê-lo porque o Jenkins é executado em um servidor e requer algumas habilidades como administrador do servidor para monitorar sua atividade.
  • Um dos motivos pelos quais muitas pessoas não implementam o Jenkins é a dificuldade de instalação e configuração do Jenkins.
  • As integrações contínuas são interrompidas regularmente devido a algumas pequenas alterações nas configurações. A integração contínua será pausada e, portanto, requer alguma atenção do desenvolvedor.

Conclusão

  • Na Integração Contínua, após um commit do código, o software é construído e testado imediatamente
  • Jenkins usado para orquestrar uma cadeia de ações para integração contínua em um projeto de software
  • Antes do Jenkins, quando todos os desenvolvedores concluíam as tarefas de codificação atribuídas, eles costumavam submeter seu código ao mesmo tempo. Later, O build é testado e implantado.
  • Após o Jenkins, o código é construído e testado assim que o desenvolvedor confirma o código. Jenkin irá construir e testar o código muitas vezes durante o dia
  • Por padrão, Jenkins vem com um conjunto limitado de recursos. Se você deseja integrar a instalação do Jenkins com ferramentas de controle de versão como o Git, você precisa instalar plug-ins relacionados ao Git. Verifique também Melhores ferramentas alternativas Jenkins
  • A maior vantagem do Jenkins é que ele é gerenciado pela comunidade que realiza reuniões públicas e recebe contribuições do público para o desenvolvimento dos projetos Jenkins
  • A maior desvantagem do Jenkins é que sua interface está desatualizada e não é amigável em comparação com as tendências atuais da interface do usuário. Se você estiver considerando outras opções que possam oferecer uma experiência de usuário mais moderna, talvez queira explorar algumas das principais ferramentas de integração contínua disponíveis.