Configurando um Ciclo de Implementação / Construção / CI para Projetos PHP

Sou um desenvolvedor solitário na maior parte do tempo, trabalhando em vários projetos grandes, principalmente baseados em PHP. Quero profissionalizar e automatizar como as alterações na base de código são tratadas e criar um processo de Integração Contínua que possibilite a transição para o trabalho em equipe sem a necessidade de fazer alterações fundamentais.

O que estou fazendo agora é que tenho um ambiente de teste local para cada projeto; Eu uso o SVN para cada projeto; as alterações são testadas localmente e depois transferidas para a versão on-line, geralmente via FTP. A documentação da API é gerada manualmente a partir do código fonte; Os testes de unidade são algo em que estou entrando devagar e ainda não faz parte da minha rotina diária.

O "ciclo de construção" que estou imaginando faria o seguinte:

Um changeset é verificado no SVN após ter sido testado localmente.

Eu inicio o processo de compilação. A revisão SVN HEAD é retirada, modificada, se necessário, e preparada para o upload.

A documentação da API é gerada automaticamente - se eu ainda não a tiver configurado em detalhes, usando um modelo padrão, verificando toda a base de códigos.

A nova revisão é implantada no local remoto via FTP (incluindo renomeação de diretório, chmodding, importação de bancos de dados e afins.) Isso é algo que eu já gostophing por muito, mas estou aberto a alternativas, é claro.

Os testes de unidade que residem em um local predefinido são executados. Sou informado sobre seu fracasso ou sucesso usando E-Mail, RSS ou (preferencialmente) saída HTML que posso pegar e colocar em uma página da web.

(opcionalmente) um arquivo de texto "changelog" do usuário final em um local predefinido é atualizado com uma parte predefinida da mensagem de confirmação ("Agora é possível filtrar" foo "e" bar "ao mesmo Esta mensagem não é necessariamente idêntica à mensagem de confirmação do SVN, que provavelmente contém muito mais informações internas.

Coisas como métricas de código, verificação de estilo de código e assim por diante não são meu foco principal no momento, mas a longo prazo, certamente o farão. As soluções que trazem esse produto pronto para o uso são muito gentilmente consideradas.

Estou à procura de

Feedback e experiências de pessoas que estão ou estavam em uma situação semelhante e implementaram com sucesso uma solução para esse problema.

Especialmente,bons tutoriais e orientações passo a passo sobre como configurar isso

Soluções que fornecemtanta automação quanto possível, por exemplo, criando uma API de esqueleto, casos de teste e assim por diante para cada novo projeto.

e também

Recomendações de produtos. O que eu sei até agora éphing/ formiga para construção ephpUnderControl ouHudson para a parte do relatório. Gosto de todos, até onde posso ver, mas é claro que não tenho experiência detalhada com eles.

eu souinundado com o trabalho, por isso tenho uma forte inclinação para soluções simples. Por outro lado, se um recurso estiver faltando, vou chorar por ser muito limitado. :) As soluções de apontar e clicar também são bem-vindas. Também estou com recomendações de produtos comerciais que podem funcionar com projetos PHP.

Minha configuração

Estou trabalhando no Windows localmente (7, para ser exato) e a maioria dos projetos clientes é executada em uma pilha LAMP, geralmente em hospedagem compartilhada (= sem SSH remoto). Estou procurando soluções que possam ser executadas em meu próprio ambiente. Estou pronto para configurar uma VM do Linux para isso, não há problema. As soluções hospedadas são interessantes para mim apenas se fornecerem todos os aspectos descritos ou forem suficientemente flexíveis para interagir com as outras partes do processo.

Recompensa Estou aceitando a resposta que sinto que me dará mais quilometragem. Há muitas sugestões excelentes aqui, gostaria de poder aceitar mais de uma resposta. Obrigado a todos!

questionAnswers(9)

yourAnswerToTheQuestion