O que é Jenkins? Ferramenta de integração contínua (CI)

Índice:

Anonim

O que é Jenkins?

Jenkins é um servidor de Integração Contínua de código aberto capaz de orquestrar uma cadeia de ações que auxiliam na realização do processo de Integração Contínua (e não somente) de forma automatizada.

Jenkins é gratuito e totalmente escrito em Java. Jenkins é um aplicativo amplamente utilizado em todo o mundo, com cerca de 300 mil instalações e crescendo a cada dia.

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

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. 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.

Neste tutorial, você aprenderá

  • O que é Jenkins?
  • O que é integração contínua?
  • Jenkin History
  • Por que usar integração contínua com Jenkins?
  • Estudo de caso real de integração contínua
  • Vantagens de usar Jenkins
  • Desvantagens de usar Jenkins

O que é integração contínua?

Na Integração Contínua, após uma confirmação do código, o software é construído e testado imediatamente. Em um grande projeto com muitos desenvolvedores, os commits são feitos várias vezes ao dia. Com cada confirmação, o código é criado e testado. Se o teste for aprovado, a construção é testada para implantação. Se a implantação for um sucesso, o código será enviado para a produção. Esta confirmação, construção, teste e implementação são um processo contínuo e, portanto, o nome integração / implementação contínua.

Um Pipeline de integração contínua é um instrumento poderoso que consiste em um conjunto de ferramentas projetadas para hospedar , monitorar , compilar e testar 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 fonte (por exemplo, CVS, SVN, GIT, Mercurial, Perforce, ClearCase e outros)
  • Ferramenta de compilação (Make, ANT, Maven, Ivy, Gradle e outros)
  • Estrutura de teste de automação (Selenium, Appium, TestComplete, UFT e outros)

Jenkin History

  • Kohsuke Kawaguchi, um desenvolvedor Java, que trabalhava 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 a tarefa de construção e teste.
  • Em 2011, a Oracle que era dona 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.
  • Hudson e Jenkins continuaram operando 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 o Hudson não é mais mantido.

Por que usar integração contínua com Jenkins?

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

Vamos imaginar que há 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 suas tarefas de codificação atribuídas, eles costumavam comprometer seus códigos todos ao mesmo tempo. Posteriormente, 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 era feita depois de muitos dias. O código é construído e testado assim que o desenvolvedor o confirma. Jenkin construirá e testará o código muitas vezes durante o dia. Se a construção for bem-sucedida, o Jenkins implantará a fonte no servidor de teste e notificará a equipe de implantação. Se a compilação falhar, o Jenkins notificará os erros à equipe de desenvolvedor.
Uma vez que o código foi construído de uma só vez, alguns desenvolvedores precisariam esperar até que outros desenvolvedores terminassem de codificar para verificar sua construção O código é criado imediatamente após qualquer confirmação do desenvolvedor.
Não é uma tarefa fácil isolar, detectar e corrigir erros para vários commits. Uma vez que o código é construído após cada confirmação de um único desenvolvedor, é fácil detectar qual código causou a falha do
O processo de construção e teste do código é inteiramente manual, 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 sabem do antigo telefone Nokia. A Nokia costumava implementar um procedimento chamado nightly build. Depois de vários commits de diversos desenvolvedores durante o dia, o software foi criado todas as noites. Como o software foi construído apenas uma vez por dia, é uma grande dor isolar, identificar e corrigir os erros em uma grande base de código.

Posteriormente, 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 pode corrigir rapidamente o defeito.

Plugins Jenkins

Por padrão, o Jenkins vem com um conjunto limitado de recursos. Se você deseja integrar sua instalação do Jenkins com ferramentas de controle de versão como 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 plug-ins em seu Jenkins.

Integração de plugins no Jenkins

Vantagens de usar Jenkins

  • Jenkins está sendo administrado 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é agora, cerca de 280 tickets foram fechados e o projeto publica uma versão estável a cada três meses.
  • Conforme a tecnologia cresce, o mesmo acontece com Jenkins. Até agora, o Jenkins tem cerca de 320 plug-ins publicados em seu banco de dados de plug-ins. Com plug-ins, Jenkins se torna ainda mais poderoso e rico em recursos.
  • Jenkins também suporta arquitetura baseada em nuvem para que você possa implantar Jenkins em plataformas baseadas em nuvem.
  • A razão pela qual o Jenkins se tornou popular é que ele foi criado por um desenvolvedor para desenvolvedores.

Desvantagens de usar Jenkins

Embora o Jenkins seja uma ferramenta muito poderosa, 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 de 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 de configuração. A integração contínua será pausada e, portanto, requer alguma atenção do desenvolvedor.

Conclusão:

  • Na Integração Contínua, após uma confirmação do código, o software é construído e testado imediatamente
  • Jenkins é um servidor de integração contínua de código aberto capaz de orquestrar uma cadeia de ações
  • Antes do Jenkins, quando todos os desenvolvedores concluíram suas tarefas de codificação atribuídas, eles costumavam comprometer seu código ao mesmo tempo. Posteriormente, o Build é testado e implantado.
  • Depois do Jenkins, o código é construído e testado assim que o desenvolvedor o confirma. Jenkin irá construir e testar o código muitas vezes durante o dia
  • Por padrão, o Jenkins vem com um conjunto limitado de recursos. Se você deseja integrar sua instalação do Jenkins com ferramentas de controle de versão como Git, você precisa instalar plug-ins relacionados ao Git
  • As maiores vantagens do Jenkins é que ele é gerenciado pela comunidade, que realiza reuniões públicas e recebe contribuições do público para o desenvolvimento de projetos Jenkins
  • O maior golpe do Jenkin é que sua interface está desatualizada e não é amigável em comparação com as tendências atuais da interface do usuário.