Pergunta

Estou começando a trabalhar em um projeto de hobby com um Pitão base de código e gostaria de configurar alguma forma de integração contínua (ou seja,executando uma bateria de casos de teste cada vez que um check-in é feito e enviando e-mails irritantes para as pessoas responsáveis ​​quando os testes falham) semelhante a CruiseControl ou EquipeCidade.

Eu percebo que poderia fazer isso com ganchos na maioria VCSes, mas isso exige que os testes sejam executados na mesma máquina que o servidor de controle de versão, o que não é tão elegante quanto eu gostaria.Alguém tem alguma sugestão para um sistema de integração contínua pequeno, fácil de usar e de código aberto, adequado para um Pitão base de código?

Foi útil?

Solução

Nós corremos Buildbot - Trac No trabalho.Não o usei muito porque minha base de código ainda não faz parte do ciclo de lançamento.Mas executamos os testes em diferentes ambientes (OSX/Linux/Win) e ele envia e-mails — e está escrito em Python.

Outras dicas

Uma possibilidade é Hudson.Está escrito em Java, mas há integração com projetos Python:

Hudson adota Python

Eu nunca tentei isso sozinho, no entanto.

(Atualizar, setembro.2011:Após uma disputa de marca registrada, Hudson foi renomeado para Jenkins.)

Segundo a integração Buildbot - Trac.Você pode encontrar mais informações sobre a integração no site Site Buildbot.No meu trabalho anterior, escrevemos e usamos o plugin mencionado (tracbb).O que o plugin faz é reescrever todos os URLs do Buildbot para que você possa usar o Buildbot dentro do Trac.(http://example.com/tracbb).

O que é realmente bom sobre o Buildbot é que a configuração é escrita em Python.Você pode integrar seu próprio código Python diretamente à configuração.Também é muito fácil escrever seus próprios BuildSteps para executar tarefas específicas.

Usamos BuildSteps para obter a fonte do SVN, extrair as dependências, publicar resultados de testes no WebDAV, etc.

Eu escrevi uma interface X10 para que pudéssemos enviar sinais com resultados de construção.Quando a construção falhou, acendemos uma lâmpada de lava vermelha.Quando a construção foi bem-sucedida, uma lâmpada de lava verde foi acesa.Bons tempos :-)

Usamos Buildbot e Hudson para desenvolvimento Jython.Ambos são úteis, mas têm pontos fortes e fracos diferentes.

A configuração do Buildbot é puro Python e bastante simples quando você pega o jeito (veja a documentação da API gerada pelo epydoc para obter as informações mais atuais).O Buildbot facilita a definição de tarefas que não sejam de teste e a distribuição dos testadores.No entanto, ele realmente não tem nenhum conceito de testes individuais, apenas texto, HTML e saída de resumo, então se você quiser ter uma saída de teste navegável em vários níveis e assim por diante, você terá que construí-la você mesmo ou apenas usar o Hudson.

Hudson tem um excelente suporte para detalhar os resultados gerais em conjuntos de testes e testes individuais;também é ótimo para comparar resultados de testes entre compilações, mas o material distribuído (mestre/escravo) é comparativamente mais complicado porque você também precisa de um ambiente Java nos escravos;além disso, Hudson é menos tolerante com links de rede instáveis ​​entre o mestre e os escravos.

Portanto, para obter os benefícios de ambas as ferramentas, executamos uma única instância do Hudson, que detecta as falhas comuns de teste, e depois fazemos a regressão multiplataforma com o Buildbot.

Aqui estão nossos exemplos:

Nós estamos usando Mordido que está integrado ao trac.E é baseado em python.

TeamCity tem algum Python integração.

Mas TeamCity é:

  • não é de código aberto
  • não é pequeno, mas sim rico em recursos
  • é gratuito para equipes pequenas e médias.

Tenho experiências muito boas com Travis-CI para bases de código menores.As principais vantagens são:

  • a configuração é feita em menos de meia tela do arquivo de configuração
  • você pode fazer sua própria instalação ou apenas usar a versão hospedada gratuitamente
  • configuração semiautomática para repositórios github
  • nenhuma conta necessária no site;faça login através do github

Algumas limitações:

  • Python não é suportado como linguagem de primeira classe (no momento da escrita;mas você pode usar pip e apt-get para instalar dependências python;ver este tutorial)

  • o código deve ser hospedado no github (pelo menos ao usar a versão oficial)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top