CI / CD Pipeline

CI / CD Pipeline

CI / CD Pipeline ou Continuous Integration and Continuous Delivery Pipeline são etapas que precisam ser executadas visando automatizar a liberação de novas versões de um software sem eliminar a qualidade das entregas.

Com a pipeline garantimos uma entrega de código de forma mais rápida até o usuário final e garantimos a qualidade nos testes, na integração e implantação do mesmo, garantindo rapidez e precisão durante o processo já que evitamos o trabalho manual humano.

image.png


Não há formas de falar sobre pipeline sem citar assuntos diretamente relacionados como DevOps e Continuous Integration, esses são assuntos que estão diretamente ligados a conceito de pipeline e automação das entregas.

Cada uma das palavras citadas acima terão um artigo exclusivo para serem explicadas mais precisamente, mas em resumo:

DevOps : Cultura que visa a maior integração dos times de desenvolvimento e operações, visando automatizações da parte de estrutura como código e facilitando de forma simples o processo de levar o código até o usuário final.

Continuous Integration : Processo de build e teste de códigos podendo realizar séries de testes e verificações para garantir a qualidade do código, além da realização do merge deste código nos ambientes como desenvolvimento e homologação.

Pipeline Estágios

Uma pipeline pode ser dividida em estágios que podem ser ativados assim que o desenvolvedor fizer um commit para o repositório.

  • Build etapa da pipeline em que o projeto será construído e boas práticas da construção serão verificadas.

  • Testes testes de níveis variados serão realizados e o flow só continua caso eles sejam aceitos.

  • Lançamento estágio do desenvolvimento onde será lançada uma nova release no repositório.

  • Implantação estágio onde o novo código é mergeado e implantado nos ambientes de dev e homolog.

  • Validação e Conformidade etapas para validar uma versão, são determinadas pela necessidade, é possível usar ferramentas de verificação da segurança de imagens, como o clair, para ter certeza da qualidade das imagens ao compará-los com vulnerabilidade (CVEs).

image.png

Não existe um modelo correto de pipeline a ser seguido, cada pipeline é construída de acordo com as necessidades de um projeto, abaixo um modelo de contexto de uma pipeline.

image.png

Containers e Pipeline de CI / CD

Os sistemas de CI / CD Pipeline tradicionais foram projetados para pipelines que usam máquinas virtuais, no entanto, o desenvolvimento de aplicações nativas em nuvem traz vantagens para esse tipo de pipeline.

"Usando o projeto open source Tekton, é possível criar pipelines de entrega no estilo do Kubernetes com controle de todo o ciclo de vida dos microsserviços, sem a necessidade de ter uma equipe que centralize as tarefas de manutenção e gerenciamento da configuração, de plug-ins e do servidor de integração contínua."

image.png

Ferramentas Utilizadas em cada etapa de uma Pipeline

image.png

Vantagens da Utilização de Pipeline

  • Automatização, eficácia e rapidez no processo de merge e implantação de uma feature para o usuário final.

  • Foco, quando não precisam se preocupar nas etapas de atualização dos ambientes, os desenvolvedor voltam sua atenção no desenvolvimento de novas features.

  • Rollback, quando encontrada alguma anomalia, a pipeline deve ser capaz de realizar rollback, ou seja, desfazer as alterações voltando para um versão estável anterior.

  • Bug Hunting, descobrimento de bugs mais rapidamente assim permitindo que suas resoluções sejam mais simples.

  • Logs, em cada etapa em que se passa uma pipeline deve haver monitoramento para verificação e acompanhamento de passo a passo além de possíveis erros.

FONTES:

Código Fonte TV - Pipeline
Simplilearn - What is Pipeline
Red Hat - O que é uma Pipeline