O que você precisa saber sobre Continuous Integration

A implementação da cultura de Continuous Integration possiblita imensos ganhos e benefícios para os times de desenvolvimento, inclusive a Continuous Delivery.

Assim como DevOps, Continuous Integration (CI) se trata de cultura e processo e você precisa implementar isso rapidamente.

Assim como DevOps, Continuous Integration (CI) se trata de cultura e processo e você precisa implementar isso rapidamente.

Em linhas gerais trata-se de uma prática do time de desenvolvimento em centralizar todos os códigos em um repositório.

Em seguida, são consideradas várias ações e possibilidades, como a automatização de processos, execução de testes, padronização, notificações, execução de rotinas e a publicação das atualizações no ambiente desejado.

Neste artigo a ideia é abordar o conceito e algumas possibilidades, em outra oportunidade falaremos de ferramentas para a implementação dessa cultura.

Continuous Integration é comumente conhecida também como CI,  as letras iniciais, mas também encontramos literaturas abordando o assunto como Continuous Development (CD).

Repositório e ambientes

Diferentes ambientes com a cultura de Continuos Integration

O ponto de partida para a implementação desse processo é centralizar todos os arquivos do projeto em repositórios para o versionamento.

Além de ser necessário para usufruir das possibilidades, é requerido também para o trabalho em equipe. Além de backup e alternativa para voltar ao tempo dos códigos (como uma máquina tempo) e guardar cada versão já publicada e as que estão em desenvolvimento.

Considerando o GIT como repositório, podemos atrelar branches para cada ambiente de desenvolvimento em uso.

Considerando um cenário com três ambientes, Desenvolvimento, Homologação e Produção, poderíamos considerar, por exemplo, os branches development, homolog e master, respectivamente, para associar o repositório aos seus respectivos ambientes.

Automatização de processos

Com o alinhamento entre repositórios e ambientes de desenvolvimento, podemos ter a mágica da publicação automática dos arquivos.

Ou seja, sempre quando algum arquivo for enviado, através de commits, para um determinado branch teríamos um processo atrelado a isso para enviar os arquivos para o respectivo ambiente de desenvolvimento.

Nada de finalizar a programação e precisar conectar em programas de FTP para o envio de arquivos. E sinceramente, bom desenvolvedor não gosta de FTP, é retrógado, lento e nada funcional.

O processo de publicação automática dos arquivos em ambientes com um processo de CI abre as portas para uma infinita possibilidade de automatização. A mais simples deles é a publicação automática dos arquivos no servidor.

Testes e a padronização de desenvolvimento

Com vários desenvolvedores trabalhando no mesmo projeto, é importante seguir um padrão de desenvolvimento. Todos do mesmo time precisam falar a mesma língua.

É possível configurar testes para serem executados antes dos códigos serem enviados para os branchs no GIT. Com isso, somente se o código estiver no padrão seria aceito.

Assim, o desenvolvedor seria alertado que há algo de ser errado ou o padrão não foi seguido. Logo, nada como uma boa xícara de café para te ajudar a padronizar e concluir a demanda.

Execução de rotinas

Os arquivos quando publicados no servidor, precisam passar por rotinas para garantir segurança e performance, por exemplo.

Pastas e arquivos precisam seguir diferentes permissões. Essas definições podem ser feitas automaticamente com a execução de uma rotina para esse fim após a publicação dos arquivos no servidor.

Arquivos JavaScript e CSS também podem ser compactados para melhor performance e tempo de carregamento.

Quando você tem definido os processos necessários a serem feitos após a publicação dos arquivos no servidor, é possível automatizar essas rotinas com a cultura de Continuous Delivery.

Comunicação em Continuous Integration

Como estamos falando de processos, rotinas e automatizações, precisamos considerar também uma comunicação para melhor fluidez do processo.

A cada publicação de arquivos nos repositórios ou no servidor, é possível notificar o time envolvido através de e-mail ou canais no Slack. Seja de forma positiva para informar o sucesso, ou reportar falhas.

Dessa forma, a automação conversa com os envolvidos, notifica, alerta e todos ficam em sintonia dos acontecimentos.

Backup e reversão

Com todos os arquivos centralizados em repositórios, além de todos os benefícios aqui citados, acabamos realizando backups e uma verdade máquina do tempo do projeto e podemos voltar em qual tempo gostaríamos.

Uma cultura de Continuous Integration também nos permite ser muito ágil com o processo de reversão de publicação no servidor.

Imagina que algum bug tenha acontecido, ou que por algum outro motivo a publicação precisa ser desfeita (e rápido), por que é momento de pico e temos grande audiência.

Basta voltarmos ao tempo anterior da publicação e deixar o processo realizar uma nova publicação. Assim, resolvemos o problema de forma ágil, efetiva e voltamos a programação para análises e correções.

Imagina ter que realizar esse processo com FTP?

Conclusão

A cultura de Continuous Integration emprega inúmeros benefícios e possibilidades. Os ganhos são realmente incríveis.

Com essa cultura empregada, dedicaremos mais tempo a criatividade e o foco na produção do projeto. O restante será responsabilidades de robôs.

O cenário de Continuous Integration bem aplicado realizará incríveis ações de Continuous Delivery.