Sou 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á gosto muito de phing , 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 bem vistas.
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 isso
Especialmente, bons tutoriais passo a passo e orientações sobre como configurar isso
Soluções que fornecem o máximo de automação 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 / form para construção, e phpUnderControl ou Hudson para a parte de relatórios. Gosto de todos, até onde posso ver, mas é claro que não tenho experiência detalhada com eles.
Estou inundado de 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 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!