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.
Aprofunde-se no seu aprendizado sobre observabilidade, entendendo sua importância e a diferença entre monitoramento e APM.
Cadastre-se para receber o TEI Report for IBM Robotic Process Automation
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.
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.
Os benefícios comumente citados da integração contínua incluem:
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.
As ferramentas populares de integração contínua de código aberto incluem:
A realização de integração contínua com ferramentas de código aberto oferece muitos benefícios, incluindo:
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.
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:
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:
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.
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:
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.
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.
A entrega contínua automatiza a entrega das aplicações nos ambientes de teste e produção.
Guia prático do pipeline de integração contínua/entrega contínua (CI/CD).