O que é CI (integração contínua)? 
Explore a solução de integração contínua da IBM Inscreva-se para receber atualizações sobre tópicos de IA
Ilustração com colagem de pictogramas de engrenagem, braço robótico, celular
O que é integração contínua?

A integração contínua é um processo de DevOps no qual os desenvolvedores adicionam alterações e novos códigos ao repositório do software que estão desenvolvendo, auxiliando as seguintes fases de criação e testes, visando encontrar e resolver erros.

Os testes automatizados são feitos em cada iteração da criação para identificar os problemas de integração mais cedo, quando são mais fáceis de corrigir. Essa abordagem também ajuda a evitar problemas na mesclagem final da versão. No geral, a integração contínua ajuda a simplificar o processo de criação, resultando em um software de maior qualidade e cronogramas de entrega mais previsíveis.

Guia corporativo de observabilidade

Aprofunde-se no seu aprendizado sobre observabilidade, entendendo sua importância e a diferença entre monitoramento e APM.

Conteúdo relacionado

Cadastre-se para receber o TEI Report for IBM Robotic Process Automation

Integração contínua e DevOps

Por definição, o DevOps descreve um processo de desenvolvimento de software e uma mudança na cultura organizacional. Esse processo acelera a entrega de um software de maior qualidade, automatizando e integrando os esforços das equipes de desenvolvimento e operações de TI, dois grupos que tradicionalmente exerciam suas tarefas separadamente ou em silos.

Na prática, os melhores processos e culturas de DevOps vão além do desenvolvimento e das operações. Esse grupo inclui engenharia de plataforma e infraestrutura, segurança, conformidade, governança, gerenciamento de riscos, linha de negócios, usuários finais e clientes. O grupo incorpora inputs de todos os stakeholders da aplicação no ciclo de vida de desenvolvimento do software.

Na estrutura de DevOps, a integração contínua fica no início do processo de desenvolvimento do software. É aqui que você verifica seu código pelo menos uma vez por dia para evitar que suas cópias locais se afastem muito do ramo principal da compilação do código. Essa abordagem ajuda a evitar conflitos de mesclagem desastrosos que poderiam "interromper" a compilação e levar horas ou dias para a equipe resolver.

A integração contínua serve como um pré-requisito para os estágios de teste, implementação e liberação da entrega contínua. Toda a equipe de desenvolvimento saberá em poucos minutos após a verificação se você criou um código incorreto, pois o serviço de integração contínua cria e testa automaticamente suas alterações de código em busca de erros.

Integração contínua (CI) versus entrega contínua (CD) versus implementação contínua

A entrega contínua e a implementação contínua seguem a integração contínua no ciclo de DevOps.

A entrega contínua (CD) começa onde a integração contínua termina, automatizando a entrega de aplicações para ambientes de infraestrutura selecionados. A CD se concentra em fornecer quaisquer alterações validadas na base do código – atualizações, correções de bugs e até mesmo novos recursos – aos usuários da forma mais rápida e segura possível. Ela garante a automação do envio de alterações de código para diferentes ambientes, como desenvolvimento, teste e produção.

Na implementação contínua, as alterações no código de uma aplicação são liberadas automaticamente no ambiente de produção. Essa automação é orientada por uma série de testes predefinidos. Depois que as novas atualizações são aprovadas nesses testes, o sistema as envia diretamente para os usuários do software.

Benefícios da integração contínua

Os benefícios comumente citados da integração contínua incluem:

  • Detecção precoce e aprimorada de erros e métricas, o que permite que você resolva os erros antecipadamente, às vezes poucos minutos após a verificação

  • Progresso contínuo e comprovado para melhorar o feedback

  • Colaboração aprimorada da equipe; todos na equipe podem alterar o código, integrar o sistema e determinar rapidamente os conflitos com outras partes do software.

  • Melhor integração do sistema, o que reduz as surpresas no final do ciclo de vida do desenvolvimento de software

  • Menos alterações paralelas para fusão e teste

  • Número reduzido de erros durante o teste do sistema

  • Sistemas constantemente atualizados para testes
Integração contínua e Agile

Agile é uma prática de desenvolvimento de software que melhora a forma como as equipes de desenvolvimento de software se organizam, se adaptam às mudanças nos requisitos e lançam o software. A integração contínua (link externo à IBM) e o desenvolvimento com Agile compartilham muitos dos mesmos recursos, como a automação de testes. Portanto, pode ser útil falar sobre a integração contínua e Agile ao mesmo tempo.

O Agile organiza o desenvolvimento em grupos menores de trabalho ou sprints. Quando aplicadas em DevOps, essas práticas combinadas ajudam a garantir a qualidade do software e a flexibilidade do projeto.

A integração contínua exige que você integre o trabalho com frequência, geralmente muitas vezes por dia. Você verifica a integração por meio de uma compilação automatizada que detecta erros de integração o mais cedo possível. A compilação deve incluir testes de execução como parte da verificação. A extensão do teste rápido para testes de tempo de execução em um ambiente de teste automatizado leva naturalmente à entrega contínua.

O Agile (link externo ao site da IBM) também é iterativo e se adapta às mudanças para que possa escalar e desenvolver soluções ao longo do tempo. No contexto da integração contínua, o desenvolvimento ágil do software consiste em fornecer as iterações de software com base em como você prioriza o valor dos recursos à medida que faz a integração contínua.

Ferramentas de integração contínua de código aberto

As ferramentas populares de integração contínua de código aberto incluem:

  • Jenkins: Jenkins, uma ferramenta de integração contínua de código aberto amplamente utilizada, permite que os desenvolvedores criem, integrem e testem automaticamente o código assim que o enviam para o repositório de origem. Esse processo facilita para os desenvolvedores a detecção precoce de bugs e a implementação mais rápida do software. O plug-in do Docker está disponível no Jenkins.

  • Buildbot: O Buildbot pode automatizar todos os aspectos do ciclo de desenvolvimento do software. Como um sistema de agendamento de trabalhos, ele enfileira e executa os trabalhos e informa os resultados.

  • Go: o que faz o Go se destacar é o conceito de pipelines, que facilita a modelagem de fluxos de trabalho de compilação complexos.

  • Travis CI: Uma das soluções hospedadas mais antigas e confiáveis, também está disponível em uma versão local para a empresa.

  • GitLab CI: Parte integrante do projeto Rails de código aberto, o GitLab CI é um serviço hospedado gratuitamente. Essa ferramenta fornece gerenciamento detalhado do repositório Git com recursos como controle de acesso, rastreamento de problemas, revisões de código e muito mais.

A realização de integração contínua com ferramentas de código aberto oferece muitos benefícios, incluindo:

  • Centenas de plug-ins que podem dar suporte ao seu projeto

  • Amplo suporte para linguagens de código aberto, como Python, Java e JavaScript

  • Sem nenhum custo, oferecendo a estudantes, startups e desenvolvedores que trabalham paralelamente uma ferramenta poderosa de baixo custo

  • Personalização, permitindo que os desenvolvedores utilizem a base de uma ferramenta de CI e trabalhem em cima dela para atender às necessidades

  • A capacidade de modificar e redistribuir as ferramentas

As ferramentas de integração contínua de código aberto a serem consideradas para o seu fluxo de trabalho de desenvolvimento de software incluem Jenkins, Go, Buildbot e Travis CI, sobre as quais você pode ler na próxima seção.

Servidores de integração contínua

Um servidor de integração contínua é uma ferramenta de software que centraliza todas as suas operações de integração contínua e fornece uma plataforma confiável e estável para você desenvolver seus projetos. Você pode configurar e ajustar os servidores de CI para desenvolver vários projetos para diferentes plataformas. Um servidor de integração contínua modela e visualiza facilmente fluxos de trabalho complexos (permitindo a entrega contínua) e fornece uma interface intuitiva para criar pipelines de entrega contínua. Um servidor de integração contínua oferece a capacidade de:

  • Executar compilações, testes e lançamentos automáticos em um único lugar

  • Implementar qualquer versão, a qualquer momento

  • Manter a configuração organizada

  • Dar suporte a plug-ins para aprimorar a funcionalidade

  • Monitorar o repositório do seu projeto

  • Extrair as alterações e realizar as tarefas que você definiu para uma confirmação bem-sucedida

  • Enviar feedback aos membros relevantes do projeto com detalhes da compilação
Caso de uso da integração contínua (CI)

Considere este caso de uso hipotético, que ilustra como dois desenvolvedores de software podem usar a integração contínua para melhorar seu processo de DevOps.

Os dois desenvolvedores devem se comunicar uns com os outros sobre quais recursos funcionam e como. Essa pequena equipe precisa de atualizações regulares e deve ser capaz de integrar e testar seu código como um todo. O agendamento de verificações e teste de código consome muito tempo de desenvolvimento. É necessário um sistema automático de integração contínua.

Negociar quando essas combinações e testes aconteceriam consumiria muito tempo do desenvolvedor. Eles teriam que concordar sobre:

  1. Quando começar a testar a integração de código
  2. Como testar se a integração foi bem-sucedida
  3. Como comunicar os resultados à equipe

As plataformas de integração contínua têm respostas padrão para essas perguntas e a maioria permite a configuração e instalação.

Normalmente, as plataformas de CI, como a Jenkins, iniciam os testes de integração na verificação. Quando o novo código for verificado, o sistema de CI executará um conjunto de testes, que pode incluir testes de unidade e testes de regressão, e então determinará se o código foi integrado com sucesso.

Ou, se você estiver usando uma linguagem compilada, o teste padrão será se o código for compilado com êxito. Se não, o novo código quebrou a compilação. Para linguagens como Python ou JavaScript, você deve criar seu próprio teste de integração.

De qualquer forma, a maioria dos sistemas de CI registra as tentativas de integração, a taxa de sucesso e outras métricas.

Testes e melhores práticas

A importância dos testes

O teste contínuo começa quando você produz uma compilação de integração contínua e um pacote (também conhecido como entidade instalável ou entidade empacotada). Ele é interrompido quando essa entidade empacotada entra em produção. Cada etapa, de ponta a ponta, envolve um pacote de testes.

No mínimo, quando você tem apenas um estágio de teste, 30% da integração contínua envolve testes. Na realidade, as atividades de integração contínua consistem em 50% a 70% de testes. Antigamente, era preciso concluir os testes manualmente. Agora você pode usar testes automatizados – a chave para uma integração contínua bem-sucedida.

Como parte da automatização dos testes para uma integração contínua, o desenvolvimento orientado por testes cria o código de forma iterativa e testa um caso de uso por vez. Essa abordagem garante a cobertura dos testes, melhora a qualidade do código e estabelece as bases para a entrega contínua. Os testes automatizados informam se o novo código falhou em um ou mais testes desenvolvidos em todas as áreas funcionais da aplicação.

As melhores práticas exigem que os desenvolvedores executem todos ou um subconjunto de testes nos seus ambientes locais. Essa prática garante que os desenvolvedores só enviem o código-fonte para o controle de versão depois que as novas alterações de código forem aprovadas nos testes. A experiência mostra que testes de regressão eficazes podem ajudar a evitar surpresas indesejáveis posteriormente.

O pipeline de integração contínua

Um pipeline de integração contínua automatiza os estágios do pipeline de um projeto – como compilações, testes e implementações– de forma repetível, com o mínimo de intervenção humana. Um pipeline de integração contínua automatizada é essencial para agilizar o desenvolvimento, os testes e a implementação das suas aplicações, permitindo controles, pontos de verificação e velocidade.

Melhores práticas de integração contínua

O processo de integração contínua é um componente crítico do DevOps, que ajuda a unificar as equipes de desenvolvimento e operações em um repositório compartilhado para codificação, teste, implementação e suporte de software. Algumas das melhores práticas de CI que podem ajudar você a ter sucesso são:

  • Manter um único repositório de código-fonte: use o gerenciamento de controle de origem para rastrear e controlar todos os arquivos para a criação de um produto. Essa base de código consolidada facilita a distribuição e a visibilidade.

  • Automatizar a compilação: essa prática envolve a compilação, a vinculação e outros processos que produzem os artefatos de compilação. O autoteste também deve ser automatizado.

  • Use confirmações diárias na linha principal: force os desenvolvedores a confirmarem suas alterações no fluxo principal de desenvolvimento pelo menos uma vez por dia. Cada desenvolvedor deve verificar se sua cópia de trabalho é consistente com o fluxo principal de desenvolvimento.

  • Teste em um clone do ambiente de produção: torne o ambiente de teste o mais semelhante possível ao seu ambiente de produção final.

  • Automatize a implementação: implemente vários ambientes (desenvolvimento, integração, produção) para executar compilações e testes.
Solução relacionada
IBM UrbanCode Build

Configure e execute compilações de software de uma forma mais fácil com a ferramenta IBM UrbanCode Build, uma solução de gerenciamento de construção em escala empresarial que usa um sistema orientado a modelos.

Explore o IBM UrbanCode Build
Recursos O que é DevOps?

O DevOps acelera a entrega de software de maior qualidade, combinando e automatizando o trabalho das equipes de desenvolvimento de software e operações de TI.

O que é entrega contínua?

A entrega contínua automatiza a entrega das aplicações nos ambientes de teste e produção.

O que são CI/CD e pipeline de CI/CD?

Guia prático do pipeline de integração contínua/entrega contínua (CI/CD).

Dê o próximo passo

Você está pronto para DevOps? Para entregar software e serviços na velocidade que o mercado exige, as equipes precisam iterar e experimentar rapidamente, implementar novas versões com frequência e ser orientadas por feedback e dados. As equipes de desenvolvimento em nuvem mais bem-sucedidas adotam a cultura e as práticas modernas de DevOps, incorporam arquiteturas nativas da nuvem e montam cadeias de ferramentas com as melhores da categoria para estimular sua produtividade.

Explore as soluções de DevOps Faça um teste gratuito