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.
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).
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.
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."
Ferramentas Utilizadas em cada etapa de uma Pipeline
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