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