Pipeline de CI/CD: aprenda com o exemplo

O que é um pipeline de CI/CD?

Um pipeline de CI/CD automatiza o processo de entrega de software. Ele cria código, executa testes e ajuda você a implantar com segurança uma nova versão do software. O pipeline de CI/CD reduz erros manuais, fornece feedback aos desenvolvedores e permite iterações rápidas de produtos.

O pipeline de CI/CD introduz automação e monitoramento contínuo durante todo o ciclo de vida de um produto de software. Envolve desde a fase de integração e teste até a entrega e implantação. Essas práticas conectadas são chamadas de pipeline de CI/CD.

O que é integração contínua, entrega contínua e implantação contínua?

  • Integração contínua é um método de desenvolvimento de software onde os membros da equipe podem integrar seu trabalho pelo menos uma vez por dia. Neste método, cada integração é verificada por uma construção automatizada para pesquisar o erro.
  • Entrega contínua é um método de engenharia de software no qual uma equipe desenvolve produtos de software em um ciclo curto. Ele garante que o software possa ser facilmente lançado a qualquer momento.
  • Implantação contínua é um processo de engenharia de software no qual as funcionalidades do produto são entregues por meio de implantação automática. Ajuda os testadores a validar se as alterações da base de código estão corretas e se são estáveis ​​ou não.

Neste tutorial do pipeline de CI/CD, você aprenderá:

Estágios de um pipeline de CI/CD

Um pipeline de CI/CD é uma especificação executável das etapas que qualquer desenvolvedor deve executar para entregar uma nova versão de qualquer software. A falha em cada etapa aciona uma notificação via e-mail.mail, Slackou outras plataformas de comunicação. Ele permite que desenvolvedores responsáveis ​​conheçam questões importantes.

Aqui estão os estágios importantes do pipeline de CI/CD:

Estágios do pipeline de CI/CD

Estágio de origem

No estágio de origem, o pipeline de CI/CD é acionado por um repositório de código. Qualquer alteração no programa aciona uma notificação para a ferramenta CI/CD que executa um pipeline equivalente. Outros gatilhos comuns incluem fluxos de trabalho iniciados pelo usuário, programações automatizadas e resultados de outros pipelines.

Estágio de construção

Este é o segundo estágio do pipeline de CI/CD no qual você mescla o código-fonte e suas dependências. Isso é feito principalmente para construir uma instância executável de software que você pode potencialmente enviar ao usuário final.

Programas escritos em linguagens como C + +, Java, C ou Go devem ser compiladas. Por outro lado, JavaScriptOs programas , Python e Ruby podem funcionar sem o estágio de construção.

A falha em passar no estágio de construção significa que há uma configuração incorreta fundamental do projeto, por isso é melhor que você resolva esse problema imediatamente.

Estágio de teste

A Etapa de Teste inclui a execução de testes automatizados para validar a correção do código e o comportamento do software. Esta etapa evita que bugs facilmente reproduzíveis cheguem aos clientes. É responsabilidade dos desenvolvedores escrever testes automatizados.

Estágio de implantação

Esta é a última etapa em que seu produto vai ao ar. Depois que a compilação tiver passado com sucesso por todos os cenários de teste necessários, ela estará pronta para ser implantada no servidor ativo.

Exemplo de pipeline de CI/CD

Aqui está um exemplo de pipeline de CI/CD:

  • Controle de código-fonte: Hospede o código no GitHub como um repositório privado. Isso o ajudará a integrar seu aplicativo com os principais serviços e software.
  • Integração contínua: Use a plataforma de integração e entrega contínua CircleCI e confirme cada código. Quando as alterações forem notificadas, esta ferramenta irá extrair o código disponível no GitHub e processar para construir e executar o teste.
  • Implante o código no UAT: Configure o CircleCI para implantar seu código no servidor AWS UAT.
  • Implantar na produção: Você precisa reutilizar etapas de integração contínua para implantar código no UAT.

Práticas recomendadas para pipeline de CI/CD

Aqui estão as práticas recomendadas para pipeline de CI/CD:

  • Escreva o processo de desenvolvimento atual para que você possa conhecer os procedimentos que precisam ser alterados e que podem ser facilmente automatizados.
  • Comece com uma pequena prova do projeto antes de prosseguir e conclua todo o processo de desenvolvimento de uma só vez.
  • Configure um pipeline com mais de um estágio no qual os testes fundamentais rápidos são executados primeiro.
  • Inicie cada fluxo de trabalho no mesmo ambiente, limpo e isolado.
  • Execute ferramentas de código aberto que abrangem tudo, desde estilo de código até verificação de segurança.
  • Configure um hub de código melhor para verificar continuamente a qualidade do seu código, executando o conjunto padrão de testes em cada ramificação.
  • Revise o código de pares de cada solicitação pull para resolver um problema de maneira colaborativa.
  • Você deve definir métricas de sucesso antes de iniciar a transição para a automação de CD. Isso o ajudará a analisar consistentemente seu software, desenvolvendo o progresso e ajudando a refinar quando necessário.

Vantagens dos pipelines CI/CD

Aqui estão os prós/benefícios do Pipeline CI/CD:

  • Construções e testes podem ser facilmente realizados manualmente.
  • Pode melhorar a consistência e a qualidade do código.
  • Melhora a flexibilidade e tem a capacidade de fornecer novas funcionalidades.
  • O pipeline de CI/CD pode agilizar a comunicação.
  • Ele pode automatizar o processo de entrega de software.
  • Ajuda você a obter feedback do cliente mais rápido.
  • O pipeline de CI/CD ajuda você a aumentar a visibilidade do seu produto.
  • Ele permite que você remova erros manuais.
  • Reduz custos e mão de obra.
  • Pipelines de CI/CD podem tornar o ciclo de vida de desenvolvimento de software mais rápido.
  • Possui implantação automatizada de pipeline.
  • Um pipeline de CD fornece um rápido ciclo de feedback do desenvolvedor ao cliente.
  • Melhora a comunicação entre os funcionários da organização.
  • Ele permite que os desenvolvedores saibam quais mudanças na construção podem recorrer à corretora e evitá-las no futuro.
  • Os testes automatizados, juntamente com alguns testes manuais, ajudam a corrigir quaisquer problemas que possam surgir.

Ferramentas importantes de CI/CD

Aqui estão as ferramentas importantes de CI/CD:

Jenkins

Jenkins é um servidor de integração contínua de código aberto que ajuda a realizar o processo de integração contínua (e não apenas) de forma automatizada. Jenkins é gratuito e é inteiramente escrito em Java. Jenkins é um aplicativo amplamente utilizado em todo o mundo, que possui cerca de 300 mil instalações e growing dia a dia.

Características:

  • Jenkin irá construir e testar o código muitas vezes durante o dia.
  • Processo automatizado de construção e teste, economizando tempo e reduzindo defeitos.
  • O código é implantado após cada construção e teste bem-sucedidos.
  • O ciclo de desenvolvimento é rápido.

link: https://www.jenkins.io/download/


Bambu

Bambu é um servidor de compilação de integração contínua que executa compilação, teste e lançamentos automáticos em um único local. Funciona perfeitamente com o software JIRA e Bitbucket.

Características:

  • Execute testes em lote paralelos
  • Configurar o Bamboo é bem simples
  • O recurso de permissões por ambiente permite que desenvolvedores e controle de qualidade implantem em seus ambientes
  • Ramificações e fluxos de trabalho integrados do Git. Ele mescla automaticamente as ramificações.

link: https://www.atlassian.com/software/bamboo


CírculoCi

CírculoCi é uma ferramenta de CI flexível que é executada em qualquer ambiente, como um aplicativo móvel multiplataforma, servidor API Python ou cluster Docker. Esta ferramenta reduz bugs e melhora a qualidade da aplicação.

Características:

  • Permite selecionar Ambiente de Construção
  • Suporta muitas linguagens, incluindo C++, JavaScript, NET, PHP, Python e Ruby
  • O suporte para Docker permite configurar um ambiente personalizado.
  • Cancele automaticamente qualquer build na fila ou em execução quando um build mais recente for acionado.

link: https://circleci.com/

Por que o pipeline de CI/CD é importante para os líderes de TI?

  • O pipeline de CI/CD pode melhorar a confiabilidade.
  • Isso torna a equipe de TI mais atraente para os desenvolvedores.
  • O pipeline de CI/CD ajuda os líderes de TI a extrair código do controle de versão e executar a construção de software.
  • Ajuda a mover o código para o ambiente de computação de destino.
  • Permite que os líderes de projeto gerenciem facilmente variáveis ​​de ambiente e configurem para o ambiente de destino.
  • Os gerentes de projeto podem publicar componentes de aplicativos push em serviços como serviços da web, serviços de banco de dados, serviços de API, etc.
  • Fornecendo dados de log e alertas sobre o estado de entrega.
  • Ele permite que os programadores verifiquem as alterações no código antes de prosseguirem, reduzindo as chances de defeitos acabarem na produção.

KPI do pipeline Ci/CD

  • Tempo de ciclo ou implantação: O tempo de ciclo é o tempo necessário para passar da fase de construção à produção. Você pode obter o tempo médio do ciclo de vida medindo as fases do processo de desenvolvimento. Essa métrica fornecerá informações sobre os gargalos em seu processo e a velocidade geral do tempo de desenvolvimento.
  • Frequência de Desenvolvimento: A frequência de desenvolvimento permite analisar os gargalos encontrados durante a automação. As versões menores mais frequentes reduzem o risco de defeitos e os corrigem quando encontrados. Essa métrica é uma medida geral da eficiência da sua equipe.
  • Alterar prazo de entrega: It mede o tempo de início da fase de desenvolvimento até a implantação. Essa métrica é um indicador de todo o processo de desenvolvimento e de quão bem a equipe trabalha em conjunto.
  • Taxa de falha de alteração: Ele se concentra no número de vezes que o desenvolvimento é bem-sucedido versus o número de vezes que falha.
  • MTTR x MTTF: MTTR (Mean Time to Recovery) é a quantidade de tempo necessária para sua equipe se recuperar de uma falha. MTTF (Mean Time to Failure) mede a quantidade de tempo entre correções e interrupções. Essas métricas refletem a capacidade da equipe de responder e corrigir problemas.

Resumo

  • Um pipeline de CI/CD automatiza o processo de entrega de software.
  • O pipeline de CI/CD introduz automação e monitoramento contínuo durante todo o ciclo de vida de um produto de software.
  • A integração contínua é um método de desenvolvimento de software onde os membros da equipe podem integrar seu trabalho pelo menos uma vez por dia.
  • A entrega contínua é um método de engenharia de software no qual uma equipe desenvolve produtos de software em um ciclo curto.
  • A implantação contínua é um processo de engenharia de software no qual as funcionalidades do produto são entregues por meio da implantação automática.
  • Existem quatro estágios de um pipeline de CI/CD: 1) Estágio de origem, 2) Estágio de construção, 3) Estágio de teste, 4) Estágio de implantação.
  • importante Ferramentas CI / CD são Jenkins, Bambo e Circle CI.
  • O pipeline de CI/CD pode melhorar a confiabilidade.
  • O pipeline de CI/CD torna a equipe de TI mais atraente para os desenvolvedores.
  • O tempo de ciclo é o tempo necessário para passar da fase de construção à produção.
  • A frequência de desenvolvimento permite analisar os gargalos encontrados durante a automação.
  • O Change Lead Time mede o tempo de início da fase de desenvolvimento até a implantação.
  • Alterar taxa de falha concentra-se no número de vezes que o desenvolvimento é bem-sucedido versus o número de vezes que falha.
  • MTTR (Mean Time to Recovery) é a quantidade de tempo necessária para sua equipe se recuperar de uma falha.
  • MTTF (Mean Time to Failure) mede a quantidade de tempo entre correções e interrupções.