O que é a JenkinsPor que usar uma ferramenta de Integração Contínua (CI)?

⚡ Resumo Inteligente

Jenkins é o servidor de automação de código aberto que compila e testa o código sempre que um desenvolvedor faz um commit, transformando a Integração Contínua de uma tarefa noturna em um processo que é executado continuamente ao longo do dia de trabalho.

  • 🔘 Objetivo: Jenkins Orquestra automaticamente as etapas de compilação, teste e implantação após cada commit.
  • ☑️ Origem: Derivado do Hudson em 2011, é agora o servidor de CI mais amplamente utilizado.
  • Oleodutos: A JenkinsO arquivo armazenado junto com o código define cada etapa da compilação.
  • 🧪 plugins: Mais de dois mil plugins se conectam Jenkins para Git, Maven, Docker e Kubernetes.
  • 🛠️ Troca: A hospedagem própria oferece controle total, mas também exige trabalho de administração do servidor.

Jenkins Visão geral do servidor de integração contínua

O que é a Jenkins?

Jenkins é um servidor de integração contínua de código aberto escrito em Java para orquestrar uma cadeia de ações para alcançar o processo de Integração Contínua de forma automatizada. Jenkins Suporta todo o ciclo de vida de desenvolvimento de software, desde a construção, teste, documentação, implantação e outras etapas do ciclo de vida de desenvolvimento de software.

Jenkins É um aplicativo amplamente utilizado em todo o mundo, com centenas de milhares de instalações e crescendo a cada dia. Ao usar JenkinsAs empresas de software podem acelerar seu processo de desenvolvimento de software, pois Jenkins Pode automatizar a construção e os testes em alta velocidade.

É uma aplicação baseada em servidor e requer um servidor web como o Apache Tomcat. O motivo? Jenkins O que tornou o software tão popular é a sua capacidade de monitorar tarefas repetitivas que surgem durante o desenvolvimento de um projeto. Por exemplo, se sua equipe estiver desenvolvendoping um projeto, Jenkins Irá testar continuamente as compilações do seu projeto e mostrar os erros nas fases iniciais do seu desenvolvimento.

Observação: implantando a GUERRA em apache O Tomcat ainda funciona, mas as versões atuais incluem um contêiner de servlet embutido, então Jenkins Normalmente funciona de forma independente. A linha LTS 2.555.x requer Java 21.

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 a Jenkins funciona?

Jenkins É uma aplicação baseada em servidor e requer um servidor web como o Apache Tomcat para funcionar em diversas plataformas, como WindowsLinux, macOS, Unix, etc. Para usar JenkinsVocê precisa criar pipelines, que são uma série de etapas que um Jenkins O servidor irá processar. Jenkins O Pipeline de Integração Contínua é uma ferramenta poderosa que consiste em um conjunto de recursos projetados 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 versão (por exemplo, CVS, SVN, GIT, Mercurial, Perforce, ClearCase e outras)
  • Ferramenta de compilação (Make, ANT, Maven, Ivy, Gradle, e outros)
  • Estrutura de teste de automação (Selenium, Appium, TestComplete, UFT, e outros)

Nas versões atuais, essas etapas residem em um Jenkinsarquivo inserido ao lado do código. O Jenkins O controlador lê esse arquivo e entrega cada etapa a um agente, que é a máquina que realmente executa o trabalho.

Jenkins História

  • 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 Os proprietários da Sun Microsystems tiveram uma disputa com a comunidade de código aberto Hudson, então eles criaram um fork do Hudson e o renomearam como Jenkins.
  • Tanto Hudson quanto Jenkins continuaram a operar de forma independente. Mas em um curto período de tempo, Jenkins Adquiriu muitos projetos e colaboradores, enquanto Hudson permaneceu com apenas 32 projetos. Com o tempo, Jenkins tornou-se mais popular e Hudson não recebe mais manutenção.

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

Algumas pessoas podem pensar que o método tradicional de desenvolvimentoping O software é a melhor opção. Vamos entender as vantagens da CI com Jenkins com o seguinte exemplo

Vamos imaginar que haja cerca de 10 desenvolvedores trabalhando em um repositório compartilhado. Alguns desenvolvedores concluem suas tarefas em 25 dias, enquanto outros levam 30 dias para finalizá-las.

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

Code O commit foi compilado, o ciclo de testes era muito infrequente e uma única compilação era feita após muitos dias.

O código é compilado e testado assim que o desenvolvedor envia o código. Jenkins irá compilar e testar código várias vezes ao longo do dia.

Se a compilação for bem-sucedida, então Jenkins irá implantar o código-fonte no servidor de teste e notificar a equipe de implantação.

Se a compilação falhar, então Jenkins Os erros serão notificados à equipe de desenvolvimento.

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 de quem é o código que causou a falha na compilação.
Code construir 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.

LaterEles adotaram a abordagem de Integração Contínua, mostrada abaixo. O software era construído e testado assim que um desenvolvedor enviava o código. Se algum erro fosse detectado, o desenvolvedor responsável poderia corrigi-lo rapidamente.

A versão noturna da Nokia foi substituída por um ciclo de Integração Contínua acionado por commits.

Jenkins Plugins

Por padrão, o Jenkins Vem com um conjunto limitado de recursos. Se você quiser integrar o seu Jenkins Se você precisa instalar ferramentas de controle de versão como o Git, então precisa instalar os plugins relacionados ao Git. Aliás, para integração com ferramentas como o Maven, Amazon EC2, você precisa instalar os plugins correspondentes em seu Jenkins, como mostra o gerenciador de plugins abaixo.

Jenkins O gerenciador de plugins lista os plugins disponíveis prontos para instalação.

Vantagens de usar Jenkins

  • Jenkins Está sendo gerido pela comunidade, que é muito aberta. Todos os meses, realizam reuniões públicas e recebem contribuições da população para o desenvolvimento do projeto. Jenkins projeto.
  • O projeto mantém um ritmo de lançamentos previsível: uma nova versão de suporte de longo prazo é escolhida a cada doze semanas e, em seguida, recebe atualizações de correção programadas.
  • À medida que a tecnologia avança, também avança. JenkinsO banco de dados de plugins agora contém mais de dois mil plugins. Com os plugins, Jenkins torna-se ainda mais poderoso e repleto de recursos.
  • Jenkins A ferramenta também oferece suporte à arquitetura baseada em nuvem, permitindo a implantação. Jenkins em plataformas baseadas em nuvem.
  • A razão porque Jenkins O que o tornou popular foi o fato de ter sido criado por um desenvolvedor para desenvolvedores.

Desvantagens de usar Jenkins

Embora Jenkins É uma ferramenta muito poderosa, mas tem suas falhas.

  • Sua interface está desatualizada e não é amigável ao usuário em comparação com as tendências atuais de interface do usuário, embora as versões recentes tenham modernizado grande parte do design da tela.
  • Embora Jenkins Embora seja adorado por muitos desenvolvedores, não é tão fácil mantê-lo porque Jenkins Funciona em um servidor e requer algumas habilidades de administrador de servidor para monitorar sua atividade.
  • Um dos motivos pelos quais muitas pessoas não implementam Jenkins se deve à dificuldade de instalação e configuração. 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.
  • Conflitos de dependência entre plugins surgem quando muitos plugins são atualizados em momentos diferentes, portanto, as atualizações de plugins precisam de sua própria janela de manutenção.

Se essas compensações forem importantes para sua equipe, compare as melhor Jenkins Ferramentas alternativas e a lista mais ampla de principais ferramentas de integração contínua antes de optar por um servidor próprio.

Perguntas Frequentes

Sim. Travas deslizantes portáteis Jenkins É distribuído sob a licença MIT e não tem custo para baixar ou executar. O custo é indireto: o servidor, o armazenamento e o tempo do administrador necessários para manter um controlador auto-hospedado em bom funcionamento.

A linha de suporte de longo prazo 2.555.x funciona em Java 21, com Java 25 também apoiaram; Java A versão 17 foi removida na versão 2.555.1. Verifique os requisitos antes de atualizar, pois uma versão antiga do JDK impede a inicialização do controlador.

A JenkinsO arquivo é um arquivo de texto que contém a definição do pipeline, incluído no arquivo junto com o código da aplicação. Ele pode ser escrito em sintaxe declarativa ou em sintaxe de script, e mantém...ping Ao estar no controle de versão, isso torna a compilação revisável como qualquer outra alteração.

O controlador é o Jenkins Instalação que agenda tarefas e fornece a interface web. Um agente é uma máquina separada que executa as etapas de compilação que lhe são atribuídas, distribuindo a carga e permitindo compilações em diversos sistemas operacionais.

Os modelos de aprendizado de máquina agrupam falhas repetidas, separam regressões genuínas de testes instáveis ​​e apontam o commit mais provavelmente responsável. Isso transforma um longo log do console em uma lista curta e hierarquizada para o desenvolvedor de plantão.

Copiloto do GitHub Esboços de etapas declarativas e passos comuns a partir de um comentário. RevAnalise todas as sugestões, pois elas frequentemente criam nomes de etapas de plugins que não estão instalados no seu controlador.

Os serviços hospedados não precisam de manutenção de servidor e iniciam mais rapidamente, enquanto Jenkins Oferece controle total sobre hardware, plugins e localização de dados. Equipes com ambientes de desenvolvimento incomuns geralmente mantêm JenkinsProjetos de pequeno porte geralmente preferem um executor hospedado.

Sim. As etapas de compilação podem invocar Maven, Gradle ou formiga, e JUnit, TestNG or Selenium Os resultados são publicados na página do trabalho, portanto, uma falha em um dos testes sinaliza toda a compilação como negativa.

Resuma esta postagem com: