Simples CI/CD pipeline com Jenkins, Docker Swarm e Github — Parte 1

Marcelo de Souza Vieira
Alcatéia Dev
Published in
3 min readMay 8, 2020

O que é um CI/CD?

CI/CD é um método para entregar aplicações com frequência aos clientes.
Este método aplica monitoramento, automatização contínua a todo o ciclo de vida das aplicações, além da entrega continua e implantações. É todo o ciclo de vida desde a codificação até o deploy.

Estou desenvolvendo um produto complexo ou um MVP para minha startup, porque o CI/CD é importante?

Bem, existem várias formas, métodos e práticas de desenvolver um software. Mas, todo time de desenvolvimento, toda empresa, deseja desenvolver o melhor software, que no final, alcance uma alta qualidade técnica e que entrega maior valor as reais necessidades do negócio.

Para atigir esses objetivos, não adianta chegar no final e testar toda a aplicação, pra saber se está tudo funcionando e se está correspondendo ao projetado.

A chave é ter um feedback curto, tanto na qualidade do código quanto na validação do negócio.

Quanto mais rápido for para desenvolver algo, fazer o code review, colocar em um ambiente de teste para ser validado pelo dono do produto e ir para a produção, melhor vai ser o resultado final.

O que é um CI (Continuos Integration)?

Todos os times de desenvolvimento utilizam alguma ferramenta para poder armazenar seu código fonte. O famoso SCM que é um controle de versão. No caso hoje é muito utilizado o GIT.

Então o CI é uma prática de desenvolvimento que tem o objetivo de fazer merges constantes com a branch principal, fazer automatização dos testes e code review. Essas práticas fazem com que as interações sejam custas, evitantado os métodos antigos, que ficavamos semanas ou meses trabalhando em uma atividade, sem atualizar o código e quando iríamos fazer os merges, dava conflito em tudo. A integração contínua coloca uma grande ênfase na automatização de testes para verificar se o código não está corrompido sempre que novos commits são integrados.

O que é um CD (Continuos Delivery)?

É a automatização do processo de liberação para seu cliente. CI automatiza os teste e o CD você automatiza seu processo de liberação decidindo liberar diariamente, semanalmente, mensalmente, dependendo da maturidade do seu time.

Mas como tudo na vida, não basta somente você implementar o CI/CD e sair para tomar um chopp. O time precisa ter uma maturidade, fazer liberações em pequenos lotes e ser bem rápido no feedback para poder resolver também de forma ágil algum erro em produção. Isso requer algumas outras técnicas que iniciamente não abordaremos aqui.

E esse tal de Continuos Deployment?

É o continuos delivery com um detalhe. Não tem interação humana.
No continuos delivery é preciso a confirmação humana para decidir se vai para a produção. No deployment não. Somente entra a interação humana em caso de alguma falha.

Resumo

Este é o conceito geral de um CI/CD.
No passo 2 vamos começar criar nosso CI/CD.

--

--

Marcelo de Souza Vieira
Alcatéia Dev

CTO at Sellers. I work since 2004 with Java and a passion for the profession. I am enthusiastic about Open Source projects.