Sugestões para melhorar o fluxo de trabalho de equipe pequena (IC / Implantação)

5

Gostaria de melhorar o fluxo de trabalho e a arquitetura da minha equipe.

Neste momento, temos um servidor dev LAMP no qual cada membro da equipe possui um subdiretório. Trabalhamos diretamente neste diretório via LAN. Há também um diretório "release" para quando estamos prontos para fazer o upload via FTP para o servidor de produção.

Usamos um repositório privado do github que serve como um repositório centralizado.

Exemplo do fluxo de trabalho diário atual de um programador:

Escolha uma história de usuário para trabalhar depois de uma rápida reunião diária Abra um branch git com o nome da história do usuário Trabalhe, comprometa algumas mudanças Empurre para o github Quando decido implantar, faço as alterações, faço uma revisão de código, altero as variáveis necessárias para produção e envio via FTP. Se foram feitas alterações no banco de dados dev, eu as replico também no banco de dados do servidor de produção.

Alguma ideia de onde devo começar a melhorar esta situação? Questões atuais:

  • Os membros da equipe não podem trabalhar facilmente em casa, pois precisam editar diretamente no servidor de desenvolvimento (problemas de latência)
  • O processo de implantação é horrível (alterar variáveis manualmente e FTP para produção)

EDITAR: Vou tentar adicionar melhores perguntas.

  • Configurando subdiretórios para cada desenvolvedor em um servidor de desenvolvimento comum: boa ideia ou não? Alternativa possível: cada desenvolvedor configura seu próprio ambiente de desenvolvimento (usando o WAMP ou similar) e envia para o servidor de teste.
  • Para o aspecto da implantação, sinto que alterar manualmente as variáveis de configuração e o FTP para a produção é uma má ideia. Alternativa possível: configurando o git no servidor de produção, configure os arquivos de configuração em .gitignore (mantenha-os manualmente diretamente no servidor de produção) e git empurrando as mudanças.
  • Para desenvolvedores remotos, eles devem replicar o ambiente de desenvolvimento (novamente, WAMP ou similar), mas trabalhar no banco de dados do servidor de desenvolvimento? Eu acho que é melhor do que copiar o banco de dados em máquinas locais.
por Lukmo 05.04.2013 / 17:47
fonte

1 resposta

3

Dê a cada desenvolvedor seu próprio ambiente, não importa se está em uma caixa compartilhada ou em uma instalação local (as instalações locais têm muitas vantagens)

Em seguida, faça o seu servidor construir e implantar automaticamente em um ambiente de teste (ou integração). À medida que as confirmações são enviadas para uma ramificação de desenvolvimento, elas são implementadas nesse ambiente de teste central para que você possa testá-lo de preferência usando ferramentas automatizadas.

Em seguida, obtenha uma configuração semelhante para o ambiente de teste do branch de lançamento - assim, quando o código for mesclado, ele também será implantado, mas para um sistema mais representativo. Normalmente, os ambientes de teste e pré-produção começarão do mesmo modo, mas o teste terminará com mais sujeira acumulada, a pré-produção deverá ser muito mais limpa, pois somente o código que é mesclado na ramificação de lançamento terminará sem código 'experimental' ou reversões.

Configs - este é um problema padrão de SCM, eu manteria uma área separada para a configuração de cada ambiente (inclusive produção) e armazenaria todas as versões lá, depois escolheria a correta para qualquer implementação que estivesse acontecendo. Obviamente, você precisará fazer um script de tudo isso para que funcione corretamente, e pode ser um PiTA, mas parece que você já tem as etapas necessárias para executar a implantação, portanto, basta criá-las. Eu recomendaria o Jenkins como um servidor de CI que o ajudará com isso se você não quiser codificá-lo diretamente no githooks.

    
por 06.04.2013 / 00:45
fonte