Integração Contínua

Integração Contínua

O que é?

A Integração Contínua (CI – Continuous Integration) é um processo que exige que os programadores integrem, num repositório partilhado por toda a equipa, o código desenvolvido por si, pelo menos uma vez por dia. Num Universo utópico, as integrações deverão ocorrer várias vezes ao dia, essencialmente a cada ‘push’ de código para o repositório. Esta acção dispoletará uma ‘build’ automatizada.

Porquê?

As metodologias Agile exigem o código esteja sempre “preparado” para uma eventual entrega. Este processo de integração contínua do código de toda a equipa, na base de código em que se está a trabalhar, permite se detectar problemas bastante mais cedo.

Num processo Waterfall, cada entrega de código poderia demorar vários meses a acontecer. Como podes imaginar, nessa altura era recorrente que num dia de entrega se convocasse uma “sala de guerra”, onde deveria estar toda a equipa de desenvolvimento, a equipa de operações, a equipa de produto, a equipa de qualidade, a equipa de gestão. O processo de entrega era um verdadeiro caos, e poderia levar várias horas a decorrer (não contando com possíveis problemas que pudessem ocorrer, e que deveriam ser atacados de imediato pela equipa responsável).

De facto, nessa altura imaginar que a cada ‘push’ para o repositório poderia correr uma bateria de testes (unitários, integração, aceitação, …) e obter feedback se eventualmente as minhas alterações iriam partir alguma funcionalidade existente, era impensável. Uma verdadeira aventura !!

Como?

Existem imensas opções para quem quer começar a construir uma pipeline de desenvolvimento com integração contínua. O mais conhecido do momento talvez seja o Jenkins. Uma ferramenta open-source de CI escrita em JAVA. Para quem não quer adicionar mais uma ferramenta à, quase infindável, lista de ferramentas que se tem de gerir e administrar, existem várias opções SaaS. No meu anterior emprego, na log, utilizam o SaaS Codeship da CloudBees. Atualmente, na RUPEAL, nós usamos o SaaS Semaphore da Rendered Text.

Uma vez configurada a pipeline de integração contínua, sempre que ocorrer um “push” para um repositório Git, irá correr um processo automático onde será levantado um ambiente virtual com as características por nós definidas, dentro do qual irá ocorrer a “build” do projecto e posteriormente correrão os testes – unitários, integração, aceitação, mutação, …

Em qualquer um destes pontos, caso ocorra um qualquer problema, o processo de integração contínua falhará e teremos o relatório do problema. Importante referir que se o processo de integração falhar, não haverá qualquer possibilidade de se efectuar um deploy – automático ou manual – para qualquer que seja o ambiente.

Não é possível utilizar “eXtreme Programming” sem este processo !!

easing a hurricane called TEAM

Meetup WordPress Porto

Tive o prazer de participar no Meetup mensal da comunidade WordPress do Porto. Um grupo que se reune mensalmente, ininterruptamente há 4 anos. Viajar até à cidade do Porto é sempre um prazer, apesar dos mais de 300km de distância de Lisboa.

easing a hurricane called TEAM

(acalmando um furacão chamado de EQUIPA)

O titulo da apresentação que levei ao Porto. A apresentação começa com uma breve viagem por alguns momentos da minha carreira de programador de software. Com passagem obrigatória por alguns “dramas” mas que, sem esses obstáculos, não seria efetivamente o que sou hoje. Esses momentos também me permitiram conhecer dos melhores profissionais da área. Alguns dos quais tenho o prazer de, ainda hoje, privar com e de poder apelidar de amigos.

Com eles aprendi o que era SCRUM e eXtreme Programming, e qual a importância do papel humano de um CTO.

Anos volvidos, eis que me encontro no papel de coordenar uma equipa numa empresa que promove a implementação de algumas boas práticas do eXtreme Programming.

A segunda parte da apresentação versa sobre como as boas práticas (coding standards, code review, test-driven development, continuous integration, continuous delivery) fazem maravilhas na e para a minha equipa diariamente.

No próximo dia 2 Novembro terei a oportunidade de revisitar esta apresentação mas agora em Lisboa no change.log.

Espero vos encontrar por lá.