Sistema de gerenciamento de compilação independente de idioma

Várias vezes na minha carreira, trabalhei em um grupo de software que determinou que

a) Precisávamos de um sistema de construção / teste
b) Devemos escrever nossos próprios
c) Podemos fazer com que um desenvolvedor passe uma semana, faça-o e ele não precisará tocá-lo novamente

Toda vez, isso resulta em um sistema que parece funcionar apenas para a pessoa que o escreveu e requer atenção constante. Passei um tempo em várias ocasiões procurando uma ferramenta que eu pudesse pegar que atendesse às nossas necessidades, mas que viesse de mãos vazias. Geralmente, ferramentas como este servidor são um mercado muito restrito. Estou no ponto novamente de precisar de algo assim. Existe algo lá fora, ou escrevemos de novo?

Aqui estão os meus requisitos em ordem de prioridade (os últimos são ótimos):

Capacidade de lidar com uma compilação de vários projetos. Temos vários componentes que fornecem coisas que outros componentes usam e usam coisas de outros componentes. Um desenvolvedor deve poder verificar 1 componente e fazer alterações sem precisar construir o mundo. Dependências fora do projeto devem ser extraídas automaticamente. Portanto, uma maneira de poder enviar e puxar os objetos criados para um servidor é fundamental para isso. Outro aspecto disso é a capacidade de poder baixar todas as dependências para um diretório local para desenvolvimento em trânsito.

Não se preocupe exatamente como as coisas são construídas. Isso pode parecer estranho, mas não quero que o sistema de compilação se preocupe em compilar meu código. Já existem ótimas ferramentas que fazem isso para todos os idiomas - Ant, CMake, etc. Eu só quero dizer a ele como chamar para fazer as coisas construírem e com qual saída ele deve se preocupar. Dessa forma, o Projeto A pode estar em Java, o Projeto B pode estar em C ++, você entendeu.

Tem alguma maneira de executar testes na saída

Mostrar os resultados atuais de compilação / teste em uma página da web

Enviar os resultados por e-mail

Integração com RCS (usamos svn)

questionAnswers(6)

yourAnswerToTheQuestion