O que é e para o que serve CI / CD ?
Published: 2022-12-22 17:58:31

CI - Continuous Integration
CD - Continuous Delivery Pipeline

CI/CD, Pipeline ou Pipe para os mais íntimos é uma das ferramentas mais importantes se tratando de aplicações que merecem atualizações continuas.

O Principal objetivo de se utilizar pipeline na programação é o de automatizar o processo de entrega de software, colocando os em produção de forma rápida e contínua sem perder a qualidade da entrega.

O pipeline é uma sequência de etapas que precisam ser executadas para colocar uma aplicação em produção. 

Como fazer o build do código, executar testes automatizados e a implantação em ambiantes de testes e produção.

O conceito de pipeline vem dos DevOps que tem a cultura de automatização de processos de infra e de desenvolvimento, a união do Development e Operations.

CI ou Continuous Integration é o processo de automatização de builds e testes de código.
Quando um desenvolvedor faz alguma alteração no repositório do código. 

Já o CD ou Continuous Delivery, consiste em entregar novos recursos a usuários da forma mais rápida e eficiente possível.

O Objetivo principal da entrega continua é permitir um fluxo constante de atualizações disponibilizadas em produção, uma espécie de linha de produção de software automatizada.

O Pipeline de entrega continua é que faz essa magica acontecer.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/meg6w2yarpd5rd4nnj8k.gif)

O conceito de Pipe é ligado ao conceito de metodologia ágil que visa sempre fazer entregas constantes que gerem maior valor a ser percebido pelo cliente. 

Tudo isso de alguma forma facilitando o processo de desenvolvimento que deverá lidar com entregas pequenas e não com atualizações gigantes.

É mais fácil entregar pequenas atualizações mesmo em grandes bases de código utilizando esse processo.

Os desenvolvedores ao não precisar se preocupar com o processo de levar seu código até a produção podem focar bem mais no processo de gerar novas features.

Dessa forma os bugs são identificados mais rapidamente, fazendo que as soluções sejam mais simples.

Todas as atualizações, testes e deploys ficam acessíveis para verificações a qualquer momento.

Em caso de algum problema com a aplicação, a utilização de um rollback ou voltar com uma atualização do sistema pode ser algo simples de ser feito. 

Não existe apenas um único modelo especifico de pipeline que deva ser seguido, ele deve ser construído a partir das características e necessidades de cada projeto visando as equipes que vão dessa forma trabalhar na aplicação.

Uma das muitas funções interessantes que pode ser implementadas em um pipeline é a integração dela com testes, e pode ser programada para, por exemplo, em caso de erros, avisar por e-mails seus administradores ou até mesmo de forma automática fazer um rollback.

Dae como construir um bom pipeline?

Atualmente o GitHub oferece recursos para o pipeline, não só ele assim como outras plataformas como AWS-CodePipeline voltado para utilização de serviços da Amazon, e muitos outros como Jenkins que é uma plataforma open source que fornece centenas de plug-ins para suporte, criação, e automatização de qualquer projeto. 

Esses são apenas alguns de muitos outros como: 
Azure Pipelines, CodeShip, CircleCI, Semaphore, Bamboo, GitLab e BitBucket.

De todas as formas, as pipes estão ae para ajudar no processo de manutenção e atualização de projetos.