CI/CD Integração contínua e entrega contínua

Prática que automatiza os processos de integração, análise e implantação de software, aumentando a produtividade dos desenvolvedores.

Categoria de Management

Postado em 05 julho 2023

Atualizado em 05 julho 2023

Palavras-chave: integração,contínua,implantação,análise,entrega,delivery,integration,deploy,test,management

Visualizações: 986



O uso da programação para desenvolvimento de soluções de software só tem se tornado mais comum. Os softwares estão em todos os lugares, operando dentro de aparelhos eletrônicos que interpretam os dados em formato binário. Computadores, televisões e smartphones são bons exemplos de aparelhos eletrônicos que possuem softwares instalados dentro deles.

A grande maioria dos aparelhos eletrônicos possuem um software chamado sistema operacional (OS). O sistema operacional é um software básico para usuários ordinários terem a capacidade de interagir com o aparelho através de uma interface do usuário. Além do sistema operacional, existem milhares de softwares que auxiliam os usuários de alguma forma.

É importante destacar que todo software é desenvolvido por programadores. Para um software ser publicado ele precisa passar por uma série de etapas. Alguns exemplos de etapas são:

  • Desenvolvimento
  • Build (compilação)
  • Teste
  • Liberação (release)
  • Implantação (deployment)

As etapas acima não podem ser ignoradas. O ciclo de vida do desenvolvimento de um software se repete toda vez que ele sofre uma nova atualização. Todas essas etapas geram custos e exigem tempo. Felizmente, é possível diminuir os custos e o tempo necessários para as etapas após o desenvolvimento. Essas etapas podem ser automatizadas com o uso de tecnologias de CI/CD.

O que é CI/CD?

CI/CD é a sigla para “Continuous Integration and Continuous Delivery”. Em português: “integração contínua e entrega contínua”. Em resumo, CI/CD é o uso de tecnologias para automatizar o processo de atualização de softwares. Apenas na etapa de desenvolvimento, a modificação do código fonte é realizado de forma manual. Após essa modificação ser enviada (git push) ao repositório remoto, as etapas posteriores irão ser realizadas automaticamente.

ci/cd integração contínua entrega contínua

As etapas posteriores são customizáveis e podem ser elaboradas de acordo com as necessidades do software. No exemplo da imagem acima, após o programador enviar uma modificação ao repositório remoto, essa modificação irá passar por múltiplos processos até chegar no último estágio (prod). Geralmente, softwares que usam CI/CD são publicados automaticamente após o desenvolvedor enviar a modificação ao repositório.

As ações a serem tomadas caso aconteça algum problema nas etapas automatizadas também são customizáveis. Quando há erros no código, eles serão detectados e deverão ser reparados (manualmente) para que o software possa ser divulgado. Mesmo automatizando processos como o processo de teste, softwares ainda podem necessitar de teste manual. Tanto o teste automatizado quanto o teste manual podem ser realizados em sequência para atender as demandas do software.

Toda vez que uma nova modificação ser enviada ao repositório, ela deverá passar pelas mesmas etapas. Ao automatizar os processos repetitivos, o desenvolvedor não precisa se preocupar em ficar compilando, testando e atualizando o ambiente de modo manual.

Um ponto forte do CI/CD é a centralização dos processos. Após a etapa de “build” o artefato ou programa executável é testado e pode ser arquivado em um servidor, como a nuvem, se tornando acessível para outros membros do projeto de modo remoto. Essa centralização facilita o gerenciamento do projeto, principalmente se os membros estão desenvolvendo os componentes de um mesmo software de modo isolado. Projetos volumosos com um grande número de membros pode ter o desempenho melhorado usando serviços de CI/CD.

Como usar o CI/CD?

Uma grande porção dos serviços de integração e entrega contínua podem ser adquiridos gratuitamente. Após a instalação de um serviço CI/CD, ele deve ser configurado na máquina local (localhost), em um servidor remoto ou em um ambiente virtual. Após a configuração do serviço na máquina, ele pode ser executado e acessado geralmente através do navegador.

Um bom exemplo de serviço CI/CD de código aberto é o Jenkins. Além de ser integrável com outros serviços, Jenkins pode ser facilmente configurado em uma máquina. Jenkins possui uma interface amigável ao usuário e quase não necessita de linhas de código para realizar a automação das tarefas.

Outros serviços como GitLab também oferecem serviços de CI/CD. A grande vantagem desse tipo de serviço (nuvem) é que ele pode ser utilizado de modo totalmente remoto, não exigindo a instalação de softwares na máquina. A desvantagem é que ele não é gratuito dependendo do número de desenvolvedores.

O que é integração contínua (CI)?

Integração contínua é uma prática que junta diferentes pedaços de código em um único repositório de modo eficiente. Quando múltiplos desenvolvedores trabalham em um mesmo projeto, várias modificações (pedaços de código) são enviados (push) constantemente em um repositório remoto. Problemas como colisão, duplicação acidental e surgimento de bugs podem ocorrer facilmente. Nesse caso, antes de continuar enviando novas modificações ao repositório, os desenvolvedores devem resolver o problema primeiro. No pior das hipóteses, problemas podem ser descobertos posteriormente, aumentando o estrago. A resolução desses problemas exige tempo, afetando a produtividade e atrapalhando o desenvolvimento.

ci integração contínua

A integração contínua ajuda a evitar esse tipo de problema e mais um pouco. Ela testa, compila, armazena os artefatos em um servidor remoto, analisa e monitora o código. O que pode ser feito na integração contínua depende de como ela foi programada e os serviços utilizados. Existe uma grande quantidade de serviços que auxiliam na integração contínua de softwares, melhorando o desenvolvimento e aumentando a produtividade dos programadores.

O que é entrega contínua (CD)?

A entrega contínua permite que o software seja entregue ao usuário final a qualquer momento. Logo, quando uma modificação é enviada ao repositório e não apresenta problemas, ela poderá ser disponibilizada imediatamente. A disponibilização se refere tanto ao ambiente de desenvolvimento como ao de produção.

cd entrega contínua implantação contínua

A entrega contínua (Continuous Delivery) é diferente da implantação contínua (Continuous Deploy). Na entrega contínua o processo de implantar o software no ambiente de produção será feita de modo manual. Na implantação contínua a implantação do ambiente de produção será automático.

Enfim, a entrega contínua automatiza processos de atualização de ambientes. Após um software ser modificado, a sua nova versão será implantada em todos os ambientes ou quase todos.

Conclusão

CI/CD é uma prática de automatização de processos após a modificação do código de um software. Softwares devem seguir uma cadeia de etapas até serem implantados em um ambiente de produção. CI/CD automatiza todo ou parcialmente esses processos, diminuindo o tempo de integração manual e aumentando a produtividade no desenvolvimento do código.

Projetos práticos

Criando artes de texto usando imagens

Convertendo imagens para ascii art usando o valor da intensidade das cores cinzentas.

Criando um sistema de integração contínua (CI/CD)

Fazendo a integração contínua de Jenkins, Sonatype Nexus, Sonatype, JUnit e Gradle para automatizar processos repetitivos. Prática bastante usada em tecnologias de DevOps.

Criando um jogo de guerra nas estrelas em javascript usando a biblioteca p5.js

Jogo simples de guerra espacial desenvolvido em javascript. Esse jogo usa cálculos de física para simular efeitos de atrito e inércia.

Integrando Laravel com o protocolo MQTT para comunicação entre dispositivos

Projeto de comunicação entre dois dispositivos ESP8266 e Raspberrypi4. Laravel irá funcionar como servidor e receptor de dados de temperatura e umidade coletados com o DHT11.

Desenvolvendo um jogo de quebra blocos em javascript

Programando um jogo clássico de arcade usando javascript e p5.js. O usuário deve quebrar os blocos utilizando uma bola ao mesmo tempo que evita que a bola saia pela parte inferior da tela

Veja também

A internet é uma terra sem lei. O que vai proteger a nossa rede interna da internet é o firewall

Uma rede interna sem um firewall é como se fosse uma casa com a porta destrancada. Um indivíduo com más intenções pode se aproveitar para a invadir quando menos esperamos.

O usuário malicioso joga a isca e espera a vítima pacientemente

Phishing tem esse nome pois a vítima se torna só mais um peixe na rede. Ter conhecimento de phishing é o melhor jeito de evitar ser um desses peixes

Sistema de produção de Toyota

Método que revolucionou o modo de produção do mercado automobilístico, aproveitando melhor os recursos e diminuindo o desperdício.

Ciência de dados

Data Science ou ciência de dados, é uma área de computação que se concentra em extrair informações valiosas de grandes quantidades de dados.

HR Tech

HR Tech é um software que auxilia na gestão de pessoas, tornando-se possível o gerenciamento centralizado na área de recursos humanos.

SGSI

O SGSI é um conjunto de políticas e normas estabelecidas pela empresa para proteger a segurança da informação empresarial, evitando riscos.