O que é CI/CD? Integração Contínua e Entrega Contínua

O que é Integração Contínua (CI)?

Integração contínua é um método de desenvolvimento de software onde os membros da equipe integram seu trabalho pelo menos uma vez por dia. Neste método, cada integração é verificada por uma construção automatizada para detectar erros. Este conceito foi introduzido pela primeira vez há mais de duas décadas para evitar o “inferno da integração”, que acontece quando a integração é adiada para o final de um projeto.

Na Integração Contínua, após um commit do código, o software é construído e testado imediatamente. Em um projeto grande com muitos desenvolvedores, os commits são feitos várias vezes durante o dia. Com cada commit, 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, portanto, o nome integração/implantação contínua.

O que é Entrega Contínua (CD)?

Entrega Contínua é um método de engenharia de software no qual uma equipe desenvolve produtos de software em um ciclo curto. Ele garante que o software possa ser facilmente lançado a qualquer momento. O principal objetivo da entrega contínua é construir, testar e lançar software com boa velocidade e frequência. Ele ajuda você a reduzir o custo, o tempo e o risco de entrega de alterações, permitindo atualizações frequentes na produção.

Qual é a diferença entre CI e CD?

CI versus CD: Integração Contínua (CI) é uma abordagem para testar cada alteração na base de código automaticamente, enquanto Entrega Contínua (CD) é uma abordagem para obter alterações de novos recursos, configuração e correções de bugs.

Desenvolvimento sem CI vs. Desenvolvimento com CI

Aqui estão as principais diferenças entre o desenvolvimento usando CI ou sem CI:

Desenvolvimento sem CI Desenvolvimento com CI
Muitos Insetos Menos bugs
Commitções pouco frequentes Confirmações regulares
Lançamentos pouco frequentes e lentos Lançamentos regulares de trabalho
Integração difícil Integração fácil e eficaz
O teste acontece tarde Os testes de integração contínua acontecem cedo e com frequência.
Os problemas levantados são mais difíceis de resolver Encontre e corrija problemas com mais rapidez e eficiência.
Má visibilidade do projeto Melhor visibilidade do projeto

Diferença entre Compilação e Integração Contínua

Atividades em Integração Contínua
Atividades em Integração Contínua

Embora a compilação compile apenas um código, o CI realiza as seguintes atividades

Integração de banco de dados

  • Garanta que o banco de dados e o código estejam sincronizados
  • Criação automatizada de banco de dados e dados de teste.

Inspeção de Código

  • Garante uma base de código saudável
  • Identifica problemas antecipadamente e aplica as melhores práticas

Implantação Automatizada

  • Permite que você lance o produto a qualquer momento
  • Estado continuamente demonstrável e funciona em qualquer máquina

Geração de documentos

  • Certifique-se de que a documentação esteja atualizada
  • Remove queimado do desenvolvedor
  • Produz relatórios e métricas de construção

Compilação

Compilação é o processo que o computador realiza para converter um código de linguagem de programação de alto nível em uma linguagem de máquina que o computador seja capaz de compreender. Garante um compilador de código em cada plataforma de destino.

Quando eu construo?

  • A cada check-in
  • Cada vez que uma dependência muda

Quais são as etapas da integração contínua?

Processo CI
Processo de CI
  • Idealmente, a construção deve vir da linha de comando e não depender de um ambiente de desenvolvimento integrado (IDE).
  • A construção deve acontecer continuamente usando um servidor Cl dedicado, não um cron job.
  • O CI construído deve ser acionado em cada check-in e não apenas à meia-noite
  • A compilação deve fornecer feedback imediato e não exigir nenhum esforço do desenvolvedor
  • Identifique as principais métricas e acompanhe-as visualmente. Mais importante ainda, aja imediatamente

O que você precisa para conduzir o processo de CI?

Conduzir o processo de CI

Aqui estão os elementos-chave que você precisa para executar todo o processo de CI:

  • Sistema de controle de versão (VCS): Ele oferece um método confiável para centralizar e preservar as alterações feitas em seu projeto ao longo do tempo.
  • Máquina virtual: Você deve ter um servidor sobressalente ou pelo menos um máquina virtual para construir seu sistema.
  • Soluções de ferramentas de CI hospedadas: Para evitar servidores ou máquinas virtuais, você deve optar por soluções de ferramentas de CI hospedadas. Esta ferramenta auxilia na manutenção de todo o processo e oferece maior escalabilidade.
  • Ferramentas: Se você selecionar uma variante auto-hospedada, precisará instalar um dos muitos Ferramentas CI como Jenkins, TeamCity, Bamboo, GitLab, etc.

Como funciona a integração contínua?

Você certamente conhece 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 foi 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.

Exemplo de integração contínua
Exemplo de integração contínua

Recursos do CI

Aqui estão recursos e benefícios importantes da integração contínua:

  • Permite que você mantenha apenas um único repositório de origem
  • Você pode testar o clone do ambiente de CI de produção
  • O ambiente construído deve estar próximo do ambiente de produção.
  • Uma das vantagens da integração contínua é a disponibilidade constante de uma versão atual
  • O processo completo de construção, teste e implantação deve estar visível para todos os detentores de pilha.

Por que usar CI?

Aqui estão razões importantes para usar a Integração Contínua:

  • Ajuda você a construir software de melhor qualidade
  • O processo de CI ajuda a aumentar o número de funcionários e a produção de entrega das equipes de engenharia.
  • CI permite que os desenvolvedores de software trabalhem de forma independente em recursos em paralelo.
  • Ajuda você a realizar testes repetíveis
  • Aumente a visibilidade permitindo maior comunicação
  • Ajuda a desenvolver um produto potencialmente entregável para construção totalmente automatizada
  • Ajuda você a reduzir riscos, tornando a implantação mais rápida e previsível
  • feedback imediato quando o problema chega
  • Evite confusões de última hora na data e horário de lançamento

Melhores práticas de utilização de sistemas de CI

Aqui estão algumas práticas recomendadas importantes durante a implementação

  • Comprometa-se antecipadamente e comprometa-se frequentemente, nunca comprometa código quebrado
  • Corrija falhas de compilação imediatamente
  • Aja de acordo com as métricas
  • Integrar todos os ambientes de destino Criar artefatos de cada construção
  • A construção do software precisa ser realizada de forma que possa ser automatizada
  • Não dependa de um IDE
  • Crie e teste tudo quando mudar
  • O esquema do banco de dados conta como tudo
  • Ajuda você a descobrir as principais métricas e rastreá-las visualmente
  • Check-in frequente e antecipado
  • Controle de código-fonte mais forte
  • A integração contínua executa testes de unidade sempre que você confirma o código
  • Automatize a construção e teste todos
  • Mantenha a construção rápida com implantação automatizada

Desvantagens do IC

Aqui estão os contras/desvantagens do processo de integração contínua:

  • É necessário tempo de configuração inicial e treinamento para se familiarizar com o servidor Cl
  • O desenvolvimento de procedimentos de teste adequados é essencial
  • O conjunto de testes bem desenvolvido exigiu muitos recursos para o servidor Cl
  • Conversão de processos familiares
  • Requer servidores e ambientes adicionais
  • Podem ocorrer tempos de espera quando vários desenvolvedores desejam integrar seu código ao mesmo tempo

Ferramentas para processo de CI

Aqui estão algumas ferramentas de CI/CD mais essenciais:

Jenkins

Jenkins

Jenkins é um software de integração contínua de código aberto. Está escrito usando o Java linguagem de programação. Facilita testes em tempo real e relatórios sobre alterações isoladas em uma base de código mais massiva. Este software ajuda os desenvolvedores a encontrar e resolver rapidamente defeitos em sua base de código e automatizar os testes de suas compilações.

Bamboo

Bamboo

Bamboo é um servidor de compilação de integração contínua que executa compilação, teste e lançamentos automáticos em um único local. Funciona perfeitamente com o software JIRA e Bitbucket. Bamboo suporta muitas linguagens e tecnologias como CodeDeply, Docker, Git, SVN, Mercurial, AWS e Amazon Baldes S3.

TeamCity

TeamCity

TeamCity é um servidor de integração contínua que oferece suporte a muitos recursos poderosos. Ele mantém um servidor de CI íntegro e estável mesmo quando nenhuma compilação está em execução. Fornece melhor qualidade de código para qualquer projeto

Resumo

  • Definição de Integração Contínua: Integração contínua é um método de desenvolvimento de software onde os membros da equipe podem integrar seu trabalho pelo menos uma vez por dia
  • CI/CD significa combinação de Integração Contínua e Entrega Contínua ou Implantação Contínua.
  • O desenvolvimento sem CI cria muitos bugs, enquanto o desenvolvimento com CI oferece menos bugs
  • Atividades importantes de integração contínua são 1) integração de banco de dados, 2) inspeção de código, 3) implantação automatizada, geração de documentos e compilação.
  • A construção deve acontecer continuamente usando um servidor Cl dedicado, não um cron job.
  • Elementos importantes do CI são 1) Sistema de controle de versão 2) Máquina virtual 3) Soluções de ferramentas de CI host 4) Ferramentas
  • O sistema de integração contínua permite manter apenas um único repositório de origem
  • O processo CI/CD ajuda você a construir software de melhor qualidade
  • As melhores práticas mais importantes de Azure O processo de integração contínua consiste em confirmar antecipadamente e confirmar frequentemente, nunca cometer código quebrado
  • A grande desvantagem do pipeline de CI/CD processo é que o conjunto de testes bem desenvolvido exigia muitos recursos para o servidor Cl
  • Jenkins, Bambook e Team City são alguns AWS Continuous úteis Ferramentas de integração.