[Re]post

Projetos PHP e Integração Contínua


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

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.

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.

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.

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.

Por fim, deixo com vocês um slide falando sobre PHP + Continuous Integration :


I'm Pedro Mendes, a passionate developer and technology enthusiast. This blog covers programming and technology in the broadest sense possible. It's the place I collect my thoughts, work and findings to share with the public.

View Comments
  • Jon Silvers

    Since you’re already using JIRA and Confluence, have you considered Bamboo? http://www.atlassian.com/software/bamboo

  • Pedro Mendes

    Hi Jon,

    I’ve heard about bamboo, but I found several articles (and indications) on CruiseControl and I found some cases of php projects using phpUnderControl.

    However, we have experienced new products and methodologies in our development process and testimonies are always welcome. You indicate bamboo?

    Thank you for commenting!
    PM

  • Anderson

    o ci é bem simples, mas por outro lado esse simples acaba te auxiliando, naquelas horas dificieis por exemplo: você quer migrar um site todo procedural, para poo, ou quer treinar uma equipe de programadores, ou quer integrar os sistemas com outras tecnologias, já o cake você é um rei , mas um rei que somente pode reinar dentro do reino do cake.

    Na antiga empresa que eu trabalhei o povo usava sourcesafe, mas ele trava bastante e no final das contas vai lhe trazer mais dor de cabeça do que soluções.

    Aqui na f6 estamos usando o svn ele é simplesmente ‘phoda’ , acho que não precisa de mais comentarios hahuahuahua.

    Bom mas como nem tudo são flores geralmente quando você entra na empresa geralmente ela possui alguns vamos dizer ‘projetos que funcionam’ mas que na verdade foram feitos no pog , mas o importante para a empresa é que funciona rsrsr [essa é aquela hora que os programadores começam a ficar calvos huahuahuah/]

    É muito dificil aplicar uma integração realmente Boa. São muitas resistencias e achismos…

  • Ricardo Carvalho

    Parabéns pelo post, ótimo blog continue postando.