Buscar

O que são pipelines de CI/CD?

Neste artigo você vai aprender mais sobre pipelines com o dataholic João Victor.



Se você já ouviu o termo “pipeline” e ficou confuso sobre do que se tratava, esse artigo tem a intenção de clarear um pouco a sua mente a respeito desse assunto. Vale salientar que o objetivo não é um detalhamento técnico preciso, mas uma explicação simples e clara do tema. Boa leitura!


O termo “pipeline”


Em uma tradução literal, “pipeline” significa “oleoduto” ou “tubo”, também pode ser traduzida como “canalizar”. De modo geral, esse termo define o processo em que algo é transportado de um local para outro, como no caso das tubulações.

Já em outros cenários, pipeline pode assumir significados diferentes, no entanto vamos nos ater a apenas um deles, que são as pipelines da área de devops, as conhecidas pipelines de CI/CD.


O que significa CI e CD?


CI (Continuous Integration) e CD (Continuous Deployment ou Continuous Delivery) são práticas do desenvolvimento de software que visam automatizar a integração e entrega de novas features em um projeto. De forma mais direta, vamos usar o exemplo de um repositório versionado com Git. Caso ainda não tenha conhecimento sobre Git, recomendo a leitura de um de nossos artigos sobre o tema, você pode acessá-lo clicando aqui. Continuando o exemplo, digamos que, ao desenvolver uma nova funcionalidade em seu site, você faz os commits e mescla suas alterações na branch principal. Em seguida, essa nova versão do projeto é enviada para ser consumida em produção pelos clientes. A imagem abaixo apresenta de forma simplificada esse fluxo:


Fonte: Autor

Para garantir que tanto o merge da pull request (integração) quanto o deploy da aplicação sejam feitos de forma segura, é necessária uma validação nas mudanças feitas no código. E é aqui que a pipeline surge para automatizar esse processo.


Automatizando processos com a pipeline



Fonte: Undraw

A pipeline tem o papel de verificar se o código não possui problemas que prejudiquem a versão em produção, e caso tudo esteja conforme o esperado, prosseguir com a entrega do produto. Essas checagens são realizadas em etapas, que são comumente chamadas de jobs ou steps. Dentre essas etapas podemos encontrar:


Estágios de integração:

  • Compilação: verifica se não há erros de build;

  • Testes: etapa onde os testes do projeto são executados, evitando que algum código não testado vá para o ambiente de produção;

  • Lint: garante que os padrões de lint do código estão sendo seguidos;

Estágios de deploy:

  • Compactação: Criação de um arquivo compactado contendo os arquivos do projeto;

  • Upload / Deploy: Onde o build da aplicação (compactado ou não) é enviado para o servidor de hospedagem, onde será acessado pelos usuários.

Vale destacar que cada etapa depende do sucesso da anterior. Por exemplo, caso algum erro seja encontrado no estágio de testes, a pipeline irá “quebrar”, ou seja, interromper o processo sem que as etapas seguintes sejam iniciadas. Dessa forma estamos seguros de que nosso deploy não terá nenhuma falha e pouparemos tempo e esforços no futuro.


Fonte: Autor

Conclusão


De acordo com o que foi visto, o uso de pipelines possui inúmeros benefícios durante o decorrer de um projeto, alguns deles são:

  • Mais segurança contra possíveis erros no ambiente de produção;

  • Detecção de bugs de forma automática, contribuindo para uma correção mais rápida do problema, sem que este afete a experiência dos usuários;

  • Economia de tempo e esforço, já que a pipeline se encarrega do trabalho de compilação, compactação (quando necessário) e deploy;

  • O time de desenvolvimento mantém o foco no progresso do projeto e na criação de novas funcionalidades, gastando menos tempo testando o código.

Espero que o conceito de pipeline tenha ficado um pouco mais claro para você 😄. Se você tem interesse em conteúdos como esse, te convido a ler dois de nossos artigos: O que é Next.js? e 3 hábitos para descomplicar a programação.


Gostou desse conteúdo? Curta, comente e compartilhe. 💚


Referências:

https://gabriel-faraday.medium.com/o-que-%C3%A9-ci-cd-onde-eu-uso-isso-57e9b8ad8c73

https://www.atlassian.com/br/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment

https://www.redhat.com/pt-br/topics/devops/what-cicd-pipeline