Você realmente integra continuamente?

Compartilhe:

Se eu fosse perguntar para você quantas vezes você integra seu código por dia, qual seria sua resposta?
(A) 10
(B) 30
(C) 50
(D) Nenhuma das anteriores: Fico dias

Se sua resposta foi a letra D, precisamos conversar… Cada vez mais, temos pessoas contribuindo na construção de features de produto adicionando como também removendo código, certo? Além disto, se pensarmos em times contribuindo para o produto, temos muitas pessoas, ao mesmo tempo, compartilhando este repositório. Já imaginou a dor de cabeça para não perder código, né? Há uns bons anos, tínhamos uma pessoa responsável por sincronizar tudo isto de maneira que nada ficasse perdido, mesmo você ficando dias sem integrar seu código. Graças a novas técnicas e práticas, este papel sumiu do mercado, pois realmente era um inferno. Alguém já ouviu falar do: “Mergel of hell”?

Umas das técnicas que nós, da K21, gostamos muito é a Integração Contínua, que de forma resumida, permite que desenvolvedores integrem com frequência suas alterações de código em um repositório. Como toda prática, para essa ser efetiva, depende muito da sua assiduidade e disciplina ao ser executada. Voltando a pergunta do início do post com a explicação da técnica: o que é continuamente para você?

Muitos desenvolvedores acabam atualizando o repositório somente após acabaram de implementar sua funcionalidade, que pode levar dias. Agora imagina um colega seu, que também está realizando alterações no mesmo trecho de código, e você só consegue receber estas modificações dias após estar desenvolvendo algo? Com certeza teremos muitos problemas.

Para tornar tudo mais fácil e automatizado, temos ótimas ferramentas que nos auxiliam nesta prática. Estamos falando dos Servidores de Integração Contínua, que nos permitem de forma automatizada executar inúmeras tarefas após enviar suas alterações em um repositório. O mais famoso deles é o Jenkins, mas hoje temos inúmeras opções na nuvem que vem tornando cada vez mais fácil esta prática.

Ainda falando das tarefas que podemos adicionar, umas das mais utilizadas pelos times é rodar os testes de unidade, permitindo de forma contínua receber feedback da saúde do nosso código. Você ainda não pratica testes automáticos? Então, dê uma olhada neste post!

Integração Contínua

Agora que temos “alguém” escutando a todo momento quando efetuamos uma alteração no nosso repositório, você pode enviar suas alterações com mais frequência, certo? De certa forma sim, mas realizar alterações com frequência deixando o seu repositório instável acaba sendo algo improdutivo para o seu time. Então, como podemos atualizar de maneira saudável e frequente nosso repositório? Segue um passo a passo de como podemos fazer isto:

  • Mantenha seu código local atualizado
  • Escreva um teste para seu código
  • Escreva o código
  • Faça seu teste ficar verde
  • Atualize seu repositório local
  • Rode todos os teste no seu computador
  • Se todos estiverem passando, atualize o repositório remoto

A abordagem utilizada para desenvolvimento foi o TDD (Test-Driven-Development), onde você acaba escrevendo o teste primeiro, mas você pode também utilizar da forma tradicional onde você escreve o código e depois o teste. Jamais esqueça dos testes!

Também não é obrigatório atualizar o repositório remoto a cada teste criado, isto depende um pouco da granularidade da funcionalidade que você está criando, mas lembre-se: quanto maior o tempo desatualizado, maior o perigo para o seu time. Caso você rode os testes locais após a atualização no seu repositório local e algum teste falhe, faça uma investigação, corrija e atualize o repositório remoto, simples assim!

Neste mindset de ciclos curtos e contínuo, é essencial que você mantenha seu repositório o mais atualizado e saudável possível!

Gostou? Comenta aí como seu time se auto-organiza no dia a dia com o código que vocês produzem.

Mauricio Andreazza

Sobre o autor(a)

Função não encontrada

Entusiasta dos métodos ágeis desde 2009 depois de “codar” muito e entregar praticamente nada em produção. Desde então, busca a melhoria contínua nos 4 domínios da agilidade: Cultural, Organizacional, Técnico e Negócio. Mas confessa que é um “Xpzeiro”(Extreme Programming) de coração!

No headers found for the table of contents.

Artigos relacionados

Avelino segurando um microfone e uma camiseta preta escrita Agile. Ele é pardo, barba e cabelos grisalhos.

As ferramentas de Inteligência Artificial (IA) já são uma realidade. Todavia, como saber qual escolher. Neste artigo quero apresentar os atuais modelos de IA que temos disponíveis para te ajudar nessa escolha. Antes vamos a alguns avisos importantes 1. A…

Avelino segurando um microfone e uma camiseta preta escrita Agile. Ele é pardo, barba e cabelos grisalhos.

Já tem um bom tempo que não falo sobre assuntos técnicos por aqui. No entanto, outro dia tivemos que pagar uma dívida técnica bem alta e isso acendeu alguns alertas. Os produtos dos meus times sofrem atualizações constantes seja por…

Avelino segurando um microfone e uma camiseta preta escrita Agile. Ele é pardo, barba e cabelos grisalhos.

Sempre que falamos de gestão de produtos, a discussão sobre os papéis de Product Owner (PO), Product Manager (PM) e Gerente de Projetos (GP) ressurge. Muito se fala sobre as vantagens da separação deles. Mas pouco se fala sobre o…

Avelino segurando um microfone e uma camiseta preta escrita Agile. Ele é pardo, barba e cabelos grisalhos.

Em 2008 comecei a utilizar Métodos Ágeis. Já faz tanto tempo que parece que eu nunca trabalhei de outras formas, porém já passei pelo Método Cascata clássico, Rational Unified Process (RUP), PMBOK e até a implantação do MPS.Br. Pelo mais…