Jump to section

CI/CD

Copiar URL

CI/CD é a abreviação de Continuous Integration/Continuous Delivery, traduzindo para o português: integração e entrega contínuas. Trata-se de uma prática de desenvolvimento de software que visa tornar a integração de código mais eficiente por meio de builds e testes automatizados. Com a abordagem CI/CD é possível entregar aplicações com mais frequência aos clientes. Para tanto, regras de automação são aplicadas nas etapas de desenvolvimento de apps.

Os principais conceitos atribuídos ao método são: integração, entrega e implantação contínuas. Com a prática CI/CD é possível solucionar os problemas que a integração de novos códigos pode causar às equipes de operações e desenvolvimento — o famoso "inferno de integração".

Especificamente, CI/CD aplica monitoramento e automação contínuos a todo o ciclo de vida das aplicações, incluindo as etapas de teste e integração, além da entrega e implantação. Juntas, essas práticas relacionadas são muitas vezes chamadas de "pipeline de CI/CD". Elas são compatíveis com o trabalho conjunto das equipes de operação e desenvolvimento que usam métodos ágeis, com uma abordagem de DevOps ou de engenharia de confiabilidade de sites (SRE).

No desenvolvimento moderno de aplicações, o objetivo é que muitos desenvolvedores trabalhem ao mesmo tempo em diferentes funcionalidades na mesma app. No entanto, se uma organização tiver que consolidar todo o código-fonte de ramificação em apenas um dia (conhecido como "merge day" ou "dia de consolidação"), o trabalho poderá ser entediante, manual e demorado. Isso acontece porque quando uma pessoa desenvolvedora que trabalha isoladamente realiza uma mudança em uma aplicação, há uma chance de haver conflito com mudanças feitas ao mesmo tempo por colegas. Esse problema pode ser agravado se cada uma dessas pessoas tiver seu próprio ambiente de desenvolvimento integrado (IDE) personalizado. O ideal seria que a equipe entrasse em acordo com apenas um IDE baseado em nuvem.

Com a integração contínua (CI), a equipe consolida as mudanças no código de volta a uma ramificação compartilhada (ou "tronco") com mais frequência (às vezes, até diariamente). As mudanças são consolidadas e depois validadas através da criação automática da aplicação. Vários testes automatizados, geralmente de unidade e integração, são feitos para garantir que as mudanças não corrompam a aplicação. Basicamente, tudo é testado, incluindo classes, funções e diferentes módulos que formam toda a aplicação. Em caso de conflito entre os códigos novos e existentes, a CI facilita a correção desses bugs com rapidez e frequência.

Após a automação de compilações e dos testes de integração e unidade na CI, a entrega contínua automatiza o lançamento desse código validado em um repositório. Portanto, para ter um processo eficaz de entrega contínua, é importante que a CI já esteja integrada ao pipeline de desenvolvimento. O objetivo da entrega contínua é fazer com que a base de códigos esteja sempre pronta para implantação em um ambiente de produção.

Cada etapa da entrega contínua, desde a consolidação das mudanças de código até a entrega de compilações prontas para produção, inclui a automação do lançamento de códigos e de teste. No final desse processo, a equipe de operação pode implantar uma app no ambiente de produção com rapidez e facilidade.

A etapa final de um pipeline de CI/CD sólido é a implantação contínua. Ela é um complemento da entrega contínua, que automatiza o lançamento de versões prontas para produção em um repositório de códigos. A implantação contínua automatiza o lançamento de uma app para a produção. Como não há um canal manual na etapa do pipeline antes da produção, a CI depende muito da automação otimizada dos testes.

Na prática, a implantação contínua significa que a mudança da pessoa desenvolvedora em uma aplicação em nuvem é habilitada depois de alguns minutos após a gravação (supondo que ela seja aprovada nos testes automatizados). Isso facilita muito mais o recebimento do feedback de usuários e a incorporação dele. Juntas, todas essas práticas de CI/CD relacionadas diminuem o risco da implantação de aplicações, facilitando o lançamento das mudanças em pequenas partes, e não de uma só vez. No entanto, há também a necessidade de muitos investimentos iniciais, já que os testes automatizados precisam ser gravados para acomodar várias etapas de teste e lançamento no pipeline de CI/CD.

As ferramentas de CI/CD ajudam a equipe a automatizar o desenvolvimento, a implantação e os testes. Algumas ferramentas tratam especificamente da integração (CI), algumas gerenciam o desenvolvimento e a implantação (CD) e outras são especializadas em testes contínuos ou funções relacionadas.

Uma das ferramentas open source mais conhecidas para CI/CD é o servidor de automação Jenkins. O Jenkins foi criado para lidar com todos os processos, desde um simples servidor CI até um hub de CD completo.

Tekton Pipelines é um framework de CI/CD para plataformas Kubernetes que proporciona uma experiência de CI/CD nativa em nuvem padrão com containers.

Além do Jenkins e do Tekton Pipelines, confira estas outras ferramentas open source de CI/CD:

  • Spinnaker, uma plataforma de CD criada para ambientes multicloud.

  • GoCD, um servidor de CI/CD voltado para modelagem e visualização.

  • Concourse, "uma plataforma open source contínua".

  • Screwdriver, uma plataforma de compilação criada para CD.

Convém às equipes considerar as ferramentas de CI/CD gerenciadas, disponíveis em uma variedade de fornecedores. Todos os principais provedores de nuvem pública oferecem soluções de CI/CD, além de GitLab, CircleCI, Travis CI, Atlassian Bamboo e muitos outros.

Aliás, é provável que qualquer ferramenta essencial para DevOps faça parte de um processo de CI/CD. As ferramentas de automação de configuração (como Ansible, Chef e Puppet), os ambientes de execução (como o Docker, rkt e cri-o) e a orquestração de container (Kubernetes) não são necessariamente ferramentas de CI/CD, mas aparecerão em vários fluxos de trabalho desse tipo.

Há muitas maneiras de implementar as práticas de CI/CD de acordo com sua estratégia de desenvolvimento de aplicações e preferência de provedor de nuvem. O Red Hat OpenShift Service on AWS oferece diversas opções para facilitar seu próprio fluxo de trabalho de CI/CD, como, por exemplo, os Pipelines Tekton e OpenShift. Usando o Red Hat OpenShift, empresas podem empregar práticas de CI/CD para automatizar o desenvolvimento, testes e a implantação de suas aplicações em diversas plataformas on-premise e na nuvem.

Leia mais

Artigo

O que é a engenharia de DevOps?

A engenharia de DevOps requer uma combinação única de habilidades e o conhecimento especializado para promover mudanças em termos de colaboração, inovação e cultura dentro da empresa.  

Artigo

O que é CI/CD?

A prática de CI/CD aplica monitoramento e automação contínuos a todo o ciclo de vida das aplicações, desde as etapas de teste e integração até a entrega e a implantação.

Artigo

O que é DevSecOps?

Se você quiser aproveitar ao máximo a agilidade e a capacidade de resposta do DevOps, a equipe de segurança da TI precisará participar de todo o ciclo de vida das suas aplicações.