Tutorial de pipeline CI/CD com exemplo
โก Resumo Inteligente
O pipeline CI/CD รฉ o caminho automatizado que leva uma alteraรงรฃo de cรณdigo desde o commit atรฉ a produรงรฃo. Ele compila, testa e implanta o software em quatro etapas โ Origem, Compilaรงรฃo, Teste e Implantaรงรฃo โ reduzindo drasticamente os erros manuais e encurtando o ciclo entre desenvolvedores e usuรกrios finais.

O que รฉ um pipeline de CI/CD?
A pipeline de CI/CD Automatiza o caminho que uma alteraรงรฃo de cรณdigo percorre, desde o commit do desenvolvedor atรฉ a implantaรงรฃo da versรฃo. Compila o cรณdigo, executa o conjunto de testes e promove o binรกrio com seguranรงa para um ou mais ambientes. Um pipeline bem projetado reduz erros manuais, fornece feedback rรกpido aos desenvolvedores e permite iteraรงรตes de produto pequenas e frequentes.
O pipeline integra a automaรงรฃo e o monitoramento contรญnuo em todo o ciclo de vida do software โ da integraรงรฃo e testes ร entrega e implantaรงรฃo. As prรกticas interligadas sรฃo chamadas coletivamente de pipeline de CI/CD.
O que รฉ integraรงรฃo contรญnua, entrega contรญnua e implantaรงรฃo contรญnua?
- Integraรงรฃo Contรญnua (CI): Uma prรกtica de desenvolvimento na qual os membros da equipe integram seu trabalho pelo menos uma vez por dia. Cada integraรงรฃo รฉ verificada por uma compilaรงรฃo e execuรงรฃo de testes automatizados que detectam erros rapidamente.
- Entrega Contรญnua (CD): Uma prรกtica de engenharia na qual a equipe mantรฉm o produto pronto para lanรงamento ao final de cada iteraรงรฃo. A implantaรงรฃo em produรงรฃo geralmente requer aprovaรงรฃo manual.
- Implantaรงรฃo Contรญnua (CD): A Entrega Contรญnua leva o conceito um passo adiante: cada alteraรงรฃo que passa pelas verificaรงรตes automatizadas รฉ implantada em produรงรฃo automaticamente, sem intervenรงรฃo humana.
Etapas de um pipeline de CI/CD
Um pipeline CI/CD รฉ uma especificaรงรฃo executรกvel das etapas necessรกrias para distribuir uma nova versรฃo do software. Uma falha em qualquer etapa aciona uma notificaรงรฃo โ por e-mail, Slackou por outro canal โ para que o engenheiro responsรกvel seja alertado imediatamente.
Etapas de um pipeline de CI/CD.
Estรกgio de origem
O pipeline รฉ acionado por uma alteraรงรฃo no repositรณrio de cรณdigo. Qualquer commit notifica a ferramenta de CI/CD para executar o pipeline correspondente. Outros gatilhos comuns incluem fluxos de trabalho iniciados pelo usuรกrio, execuรงรตes agendadas e os resultados de pipelines upstream.
Estรกgio de construรงรฃo
A etapa de compilaรงรฃo compila o cรณdigo-fonte e resolve suas dependรชncias em um artefato executรกvel. Linguagens compiladas como C++, Java, C e Go devem produzir binรกrios aqui. Linguagens interpretadas como JavaScript, PythonE o Ruby ainda se beneficia dessa etapa para empacotar dependรชncias, verificar erros de cรณdigo e produzir imagens de contรชiner.
Uma falha na fase de compilaรงรฃo geralmente indica uma configuraรงรฃo incorreta fundamental do projeto, portanto, o problema deve ser resolvido imediatamente.
Estรกgio de teste
A fase de testes executa o conjunto de testes automatizados para validar a correรงรฃo do cรณdigo e o comportamento do software. Ela detecta erros facilmente reproduzรญveis antes que cheguem aos clientes. Escrever e manter os testes รฉ responsabilidade do desenvolvedor โ o pipeline apenas garante que eles sejam executados.
Estรกgio de implantaรงรฃo
A etapa de implantaรงรฃo promove o artefato verificado para um ambiente de destino, como homologaรงรฃo, teste de aceitaรงรฃo do usuรกrio (UAT) ou produรงรฃo. Assim que a compilaรงรฃo passar em todos os testes necessรกrios, a implantaรงรฃo pode ser acionada automaticamente (Implantaรงรฃo Contรญnua) ou apรณs uma verificaรงรฃo manual (Entrega Contรญnua).
Exemplo de um pipeline de CI/CD
O passo a passo abaixo mostra um pipeline concreto que utiliza o GitHub. CircleCIe AWS.
- fonte Code Ao controle: Hospede o cรณdigo do aplicativo em um repositรณrio privado do GitHub para que ele se integre aos serviรงos de compilaรงรฃo, verificaรงรฃo e implantaรงรฃo.
- Integraรงรฃo contรญnua: connect CircleCI para o repositรณrio, de forma que cada push baixe o novo cรณdigo, o compile e execute o conjunto de testes.
- Implantaรงรฃo em ambiente de testes de aceitaรงรฃo do usuรกrio (UAT): configurar CircleCI Implantar versรตes bem-sucedidas em um ambiente AWS UAT para testes com as partes interessadas.
- Implantaรงรฃo em Produรงรฃo: Reutilize as mesmas etapas de CI/CD para promover o artefato para produรงรฃo, com aprovaรงรฃo manual caso esteja praticando Entrega Contรญnua.
Melhores prรกticas do pipeline de CI/CD
As prรกticas abaixo mantรชm os pipelines rรกpidos, confiรกveis โโe com a confianรงa da equipe:
- Documente o processo de entrega atual antes de automatizรก-lo, para saber o que manter, alterar ou remover.
- Comece com uma pequena prova de conceito em vez de automatizar todo o processo de uma sรณ vez.
- Estruture o pipeline em vรกrias etapas para que as verificaรงรตes fundamentais sejam executadas primeiro, de forma rรกpida.
- Inicie cada fluxo de trabalho a partir de um ambiente limpo e isolado para manter a reprodutibilidade das compilaรงรตes.
- Adicione ferramentas de cรณdigo aberto que abranjam tudo, desde estilo de cรณdigo atรฉ verificaรงรฃo de seguranรงa.
- Utilize uma plataforma de controle de qualidade de cรณdigo que execute os mesmos testes em todas as ramificaรงรตes.
- Analise cada solicitaรงรฃo de pull request por pares e considere a saรญda do pipeline como parte da anรกlise.
- Defina as mรฉtricas de sucesso antes de iniciar a transiรงรฃo โ elas impulsionam a melhoria contรญnua.
Vantagens dos Pipelines CI/CD
Um pipeline CI/CD maduro oferece diversos benefรญcios mensurรกveis:
- Substitui compilaรงรตes e lanรงamentos manuais propensos a erros por automaรงรฃo confiรกvel.
- Melhora a consistรชncia e a qualidade de cada artefato enviado.
- Aumenta a flexibilidade โ novas funcionalidades podem ser implementadas sob demanda.
- Simplifica a comunicaรงรฃo entre desenvolvedores, controle de qualidade e operaรงรตes.
- Acelera os ciclos de feedback dos clientes com lanรงamentos frequentes.
- Aumenta a visibilidade do produto por meio de painรฉis, registros e notificaรงรตes.
- Elimina erros manuais e reduz o custo de lanรงamento.
- Reduz o ciclo de vida do desenvolvimento de software.
- Proporciona um ciclo de feedback rรกpido do desenvolvedor ao usuรกrio final.
- Destaca as alteraรงรตes que quebram a compilaรงรฃo para que possam ser revertidas rapidamente.
- Combina testes automatizados com testes exploratรณrios manuais leves para manter a alta qualidade.
Ferramentas importantes de CI/CD
As equipes modernas podem escolher entre um ecossistema robusto de ferramentas de CI/CD. As mais amplamente adotadas sรฃo descritas abaixo.
1) Jenkins
Jenkins รฉ um servidor de Integraรงรฃo Contรญnua de cรณdigo aberto que automatiza fluxos de trabalho de compilaรงรฃo, teste e lanรงamento. Escrito em Java e com o suporte de um amplo ecossistema de plugins, Jenkins Fornece energia para centenas de milhares de instalaรงรตes em todo o mundo.
Caracterรญsticas:
- Compila e testa cรณdigo vรกrias vezes ao dia.
- Automatiza todo o processo de compilaรงรฃo/teste, economizando tempo e reduzindo defeitos.
- Implanta o cรณdigo apรณs cada compilaรงรฃo e teste bem-sucedidos.
- Acelera o ciclo de desenvolvimento atravรฉs de feedback rรกpido.
link: https://www.jenkins.io/download/
2) Bamboo
Bamboo ร um servidor de integraรงรฃo contรญnua que reรบne compilaรงรฃo, teste e lanรงamento automรกticos em uma รบnica ferramenta. Ele se integra perfeitamente com Jira Software e Bitbucket.
Caracterรญsticas:
- Executa testes em lote em paralelo.
- Fรกcil de instalar e configurar.
- As permissรตes por ambiente permitem que desenvolvedores e a equipe de controle de qualidade faรงam a implantaรงรฃo em seus prรณprios ambientes.
- Fluxos de trabalho de ramificaรงรฃo Git integrados que mesclam ramificaรงรตes automaticamente.
link: https://www.atlassian.com/software/bamboo
3) CircleCI
CircleCI ร uma ferramenta de CI flexรญvel que executa builds para aplicativos mรณveis multiplataforma. Python APIs, clusters Docker e muito mais. Reduz erros e melhora a qualidade da aplicaรงรฃo atravรฉs de feedback rรกpido.
Caracterรญsticas:
- Escolha de ambientes de construรงรฃo.
- Suporta muitos idiomas, incluindo C++, JavaScript, .NET, PHP, Pythone Rubi.
- Suporte do Docker para imagens de compilaรงรฃo personalizadas.
- Cancela automaticamente as compilaรงรตes enfileiradas ou em execuรงรฃo quando uma compilaรงรฃo mais recente รฉ acionada.
link: https://circleci.com/
4) GitHub Actions, GitLab CI e Argo CD
O GitHub Actions e o GitLab CI integram CI/CD diretamente na plataforma de controle de versรฃo, eliminando a necessidade de um servidor de compilaรงรฃo externo. O Argo CD adiciona implantaรงรฃo contรญnua no estilo GitOps para clusters Kubernetes, reconciliando o cluster com o estado desejado declarado no Git.
Por que o pipeline de CI/CD รฉ importante para os lรญderes de TI?
- Melhora a confiabilidade e a previsibilidade das liberaรงรตes.
- Torna a organizaรงรฃo de engenharia mais eficiente.tracativo para desenvolvedores.
- Extrai o cรณdigo do sistema de controle de versรฃo e executa a compilaรงรฃo com um รบnico clique.
- Move arquivos binรกrios com seguranรงa para os ambientes de destino.
- Permite que os lรญderes de projeto gerenciem as variรกveis โโde ambiente e a configuraรงรฃo por ambiente.
- Publica componentes de aplicativos na web, em bancos de dados, APIs e outros serviรงos.
- O Surfaces registra dados e alertas sobre o estado de cada versรฃo.
- Verifica as alteraรงรตes de cรณdigo antes que elas sejam implementadas, reduzindo defeitos em produรงรฃo.
KPIs do pipeline CI/CD
- Tempo de ciclo ou implantaรงรฃo: O tempo necessรกrio para passar da fase de desenvolvimento para a produรงรฃo. As tendรชncias revelam gargalos no seu processo de entrega.
- Frequรชncia de implantaรงรฃo: Com que frequรชncia vocรช realiza os lanรงamentos? Lanรงamentos menores e mais frequentes reduzem o risco e facilitam a correรงรฃo de falhas.
- Alterar prazo de entrega: O tempo decorrido desde o inรญcio do desenvolvimento atรฉ uma implementaรงรฃo bem-sucedida. Reflete a eficรกcia da integraรงรฃo entre planejamento, codificaรงรฃo e entrega.
- Taxa de falha de alteraรงรฃo: A porcentagem de implantaรงรตes que causam incidentes ou exigem reversรฃo. Tracks a seguranรงa do oleoduto.
- MTTR (Tempo Mรฉdio de Recuperaรงรฃo): Tempo mรฉdio para restabelecer o serviรงo apรณs uma falha. Mede a resiliรชncia.
- MTTF (Tempo Mรฉdio atรฉ a Falha): o tempo mรฉdio entre falhas. Tracks confiabilidade a longo prazo.




