PHP e Integração Contínua

Estamos lutando aqui na 3Jane para alcançarmos um formato indolor de Continuous Integration em nossos projetos - que são (até então) em PHP.

Background Image

Estamos lutando aqui na 3Jane para alcançarmos um formato indolor de Continuous Integration em nossos projetos – que são (até então) em PHP.

Qual a importância da Integração Contínua?

A integração contínua é uma prática importante no desenvolvimento de software que consiste em integrar o código de diferentes desenvolvedores frequentemente em um repositório centralizado.

Detectando e corrigindo os erros rapidamente, você evita que problemas se acumulem e sejam mais difíceis de resolver no futuro.

Além disso, a integração contínua também ajuda a garantir a qualidade do código, pois testes automatizados são executados sempre que o código é integrado, o que permite detectar problemas de forma precoce.

Isso tudo ajuda a garantir que o software seja entregue com maior confiabilidade e rapidez.

Testes

black traffic light
Photo by Davis Sánchez on Pexels.com

Existe um número relevante de ferramentas disponíveis, o problema esta sendo fazer com que elas sigam um fluxo natural no projeto. Ou as ferramentas precisam de uma adaptação para PHP (como o CruiseControl com o PHPUnderControl), ou as ferramentas não se encaixam, ou são muito limitadas.

Embora um pouco complexo, estamos achando algumas coisas boas. Para começar, tinhamos decidido apostar no CakePHP, um framework sólido e com grande similaridade com o Rails.

Ficamos realmente satisfeitos com a organização da “criança” e de como ele é bem feito. E também tem o fato de que o CakePHP já vem com uma integração com o SimpleTest, que até onde pude ver, a ponte entre eles é sólida e sem “adaptações” incomodas – até porque o SimpleTest também é em PHP.

CakePHP vs Code Igniter

sliced white and pink icing covered cake on white plate with silver colored fork
Photo by Erick MUFASA on Pexels.com

Acontece que pelo CakePHP ser bem completo, ele também é mais lento que outros frameworks e por motivos de força maior decidimos trocar para o Code Igniter, que também é um bom framework, mas não possui tantas camadas quanto o CakePHP e teremos que “digitar mais”. Outro ponto fraco do Code Igniter com relação ao CakePHP é o bake, que é um script generator do CakePHP que agiliza muito a vida.

Quanto aos testes no Code Igniter ele já vem com uma library bem simples para teste unitário, mas é tão simples que estou propondo aqui que troquemos para o SimpleTest ou PHPUnit. Como este último parece ter uma integração com o PHPUndercontrol, estou lendo como plugá-lo ao CodeIgniter.

Já construímos o Tracer Bullet para os testes do ambiente e estamos implantando-o. Estou vendo o Phing para automatizar o processo de deploy, mas ainda não parei para estuda-lo de verdade. Essa é uma das minhas metas nos próximos dias.

Versionamento e Issues

person coding on a macbook pro
Photo by olia danilevich on Pexels.com

Para controle de código, migramos do SourceSafe para o SubVersion e apesar de alguns problemas com o Tortoise, valeu a pena.

Pra ser bem sincero, o engraçado é como sempre os problemas envolvem o Windows. Para controle de bug/issues estamos usando o Jira e como Wiki o Confluence. Ah, e para a documentação do nosso código estamos usando o phpDocumentator.

Conclusão

Ufa! Acho que é isso… O problema é conseguir tempo pra ver tudo isso e dar continuidade no projeto.

Mas posso dizer que demos um “salto quântico” no processo de desenvolvimento aqui na 3Jane. Se você quiser uma lista organizada e decente das ferramentas que podem te ajudar no desenvolvimento em projetos PHP, o Dave Marshall publicou um top 10 no blog dele.