

# O que é integração contínua e entrega/implantação contínuas?
<a name="what-is-continuous-integration-and-continuous-deliverydeployment"></a>

 Esta seção discute as práticas de integração e entrega contínuas e explica a diferença entre entrega contínua e implantação contínua. 

## Integração contínua
<a name="continuous-integration"></a>

 Integração contínua (CI) é uma prática de desenvolvimento de software em que os desenvolvedores mesclam regularmente alterações de código em um repositório central para permitir a execução de compilações e testes automáticos. Na maioria das vezes, a CI é uma referência à etapa de compilação ou integração do processo de lançamento de software e exige um componente de automação (por exemplo, um serviço de CI ou de compilação) e um componente cultural (por exemplo, aprender a integrar com frequência). Os principais objetivos da CI são encontrar e investigar erros mais rapidamente, melhorar a qualidade do software e reduzir o tempo necessário para validar e lançar novas atualizações de software. 

 A integração contínua se concentra em confirmações menores e mudanças de código menores para integrar. Um desenvolvedor confirma o código em intervalos regulares, no mínimo uma vez por dia. O desenvolvedor extrai o código do repositório para garantir que o código no host local seja mesclado antes de enviar ao servidor de compilação. Nesse estágio, o servidor de compilação executa os vários testes e aceita ou rejeita a confirmação de código. 

 Os desafios básicos da implementação da CI incluem confirmações mais frequentes para a base de código comum, manutenção de um único repositório de código-fonte, automação de compilações e automação de testes. Desafios adicionais incluem testes em ambientes semelhantes aos de produção, fornecendo visibilidade do processo para a equipe e permitindo que os desenvolvedores obtenham facilmente qualquer versão da aplicação. 

## Entrega e implantação contínuas
<a name="continuous-delivery-and-deployment"></a>

 A entrega contínua (CD) é uma prática de desenvolvimento de software em que alterações de código são criadas, testadas e preparadas automaticamente para liberação para produção. Ela expande a integração contínua, implantando todas as alterações de código em um ambiente de teste, de produção ou ambos após a etapa de compilação ter sido concluída. A entrega contínua pode ser totalmente automatizada com um processo de fluxo de trabalho ou parcialmente automatizada com etapas manuais em pontos críticos. Quando a integração contínua for implementada adequadamente, os desenvolvedores sempre terão um artefato de criação pronto para ser implantado, e que passou por um processo de teste padronizado. 

 Com a implantação contínua, as revisões são implantadas em um ambiente de produção automaticamente, sem aprovação explícita de um desenvolvedor, automatizando todo o processo de lançamento de software. Isso, por sua vez, permite um encaminhamento de feedback contínuo dos clientes no início do ciclo de vida do produto. 

## A entrega contínua não é implantação contínua
<a name="continuous-delivery-is-not-continuous-deployment"></a>

 Um equívoco sobre a entrega contínua é que isso significa que todas as alterações confirmadas são aplicadas à produção imediatamente após passar nos testes automatizados. No entanto, o mais importante da entrega contínua não é aplicar todas as alterações à produção imediatamente, mas garantir que todas as mudanças estejam prontas entrar em produção. 

 Antes de implantar uma alteração na produção, você pode implementar um processo de decisão para garantir que a implantação da produção seja autorizada e auditada. Essa decisão pode ser tomada por uma pessoa e depois executada pelas ferramentas. 

 Usando a entrega contínua, a decisão de entrar em operação passa a ser uma escolha comercial, não técnica. A validação técnica acontece em cada confirmação. 

 Implementar uma mudança na produção não é um evento disruptivo. A implantação não exige que a equipe técnica pare de trabalhar no próximo conjunto de alterações e não precisa de um plano de projeto, documentação de entrega ou uma janela de manutenção. A implantação se torna um processo repetível que foi realizado e comprovado várias vezes em ambientes de teste. 