O que você está discutindo na sua pergunta são, na verdade, três conceitos diferentes:
A integração contínua em seu núcleo está fazendo pequenas alterações e frequentemente sincronizando essas alterações com a "verdade global". Em vez de fazer um checkout e mantê-lo por uma semana, um desenvolvedor deve trabalhar em tarefas que podem ser concluídas em um dia para que seu código nunca fique muito fora de sincronia com o repositório principal.
Para conseguir isso sem causar problemas à equipe (por exemplo, verificar a fonte que não cria ou quebra a funcionalidade existente). O desenvolvedor deve verificar se seu código não "quebra a compilação". Se feito manualmente, isso adiciona uma sobrecarga adicional ao processo de desenvolvimento (pense em um projeto que leva muito tempo para ser construído e / ou possui muitas interdependências em que uma alteração em uma linha de código pode afetar o aplicativo de maneiras inesperadas).
Para mitigar essa situação, usamos outras técnicas para remover essa sobrecarga.
Usamos compilações automatizadas para efetuar o check-out da fonte e, opcionalmente, executando testes automatizados que verificam se o aplicativo funciona como deveria (essa etapa é tão útil quanto a suíte de testes).
Uma outra etapa de entrega contínua soluciona seu problema com o banco de dados e outras preocupações. A idéia aqui é fornecer algum nível de versão para o banco de dados e outros fatores do ambiente, para que possamos confirmar o mais rápido possível que o aplicativo funciona em um ambiente o mais próximo possível da produção .
builds
ebuild
porque não sabia qual usar.