Integração Contínua para Ruby on Rails? [fechadas]

149

Estive procurando uma solução de Integração Contínua para Ruby on Rails, mas não fiquei muito satisfeita com os resultados. Eu vim de uma loja .NET que usava o CruiseControl.NET e estava realmente estragada com sua facilidade de uso e status / relatórios avançados.

Idealmente, estou procurando:

  • A óbvia integração Git / SVN e Test :: Unit

  • Integração com Rake e / ou Capistrano

  • Uma interface da web mostrando o status da construção

  • Notificação por email de construções com falha.

  • Notificação na área de trabalho (potencialmente através do Growl)

  • API REST para status de construção

  • Estrutura de plug-in para executar outras ferramentas de análise de código e relatar resultados na interface do usuário

Jim Fiorato
fonte
11
Então, qual é a sua escolha agora, três anos depois?
Andrei
3
Posso sugerir circleci.com ?
Paul Biggar 24/05

Respostas:

83

Acabei de analisar as opções aqui e pensei em agrupá-las no final de 2011.

Integridade

Após uma experiência de quase morte que deixou o site ainda vinculado ao site com informações desatualizadas e derrubou o site de demonstração, este projeto voltou a brilhar. Mas a documentação não foi adiante e muitas e várias etapas do tutorial estão simplesmente quebradas ; Eu tive que mudar as referências às gemas, criar algumas coisas fora da banda e ainda assim não consegui fazê-las funcionar .

Cruise Control.rb

Simples : basta fazer o download, executar uma linha de comando para adicionar seu projeto (não há interface do usuário para isso) e executar o aplicativo Rails. Mas também não há interface do usuário para editar seu projeto, e não há integração real com artefatos de construção além de exibir links para eles: você não obtém gráficos de testes executados, linhas de tendência etc. Também tive que ajustar o routes.rbarquivo para obter o código que liga o trabalho (a resources :projectslinha precisa se mover abaixo de todas as outras rotas não padrão).

TeamCity

Isso parece incrível , mas a escala de pagamento parece fora de sintonia. Três agentes são gratuitos e, quando você é dependente, precisa distribuir centenas de dólares. O Personal Builds parece ótimo, mas não tem orçamento .

Jenkins (née Hudson )

Este é um Java robusto e está carregado com milhares de opções , portanto a interface do usuário é confusa e é uma tarefa árdua configurar seus projetos . Mas depois que você o configura, você obtém muitos plugins que podem ser usados ​​em qualquer lugar, executar quase tudo e relatar quase tudo. O OS X Installer aponta para Jenkins, /Users/Shared/Jenkins/Homemas falha ao criar esse diretório ou chownpara daemon(que é usado por padrão e você deve mudar para um novo jenkinsusuário para poder configurar a integração do GitHub).

Outras

Eu realmente não tentei isso, mas pensei em mencionar o porquê:

  • O CI Joe quer possuir o repositório GitHub mais do que eu quero, e seus criadores nem o estão usando; eles estão no Jenkins.
  • O Cerberus parece bem pequeno, mas não possui uma interface do usuário e não publica automaticamente artefatos de construção onde outras pessoas possam vê-los.
  • O BigTuna parece ser um clone do CruiseControl.rb sem o (já mínimo) suporte da comunidade.
  • Bamboo parece realmente legal se você usa JIRA e BitBucket, mas nós também não. Ele é implantado, mas já temos os configurados em Capistrano.

A escolha

Fomos com Jenkins , mas eu realmente gostaria que uma das soluções mais leves tivesse dado certo.

TALlama
fonte
8
E quanto a travis?
Vanuan
3
Eu trabalho em um projeto de código-fonte fechado, então, a menos que eu entenda mal a documentação deles (com poucas palavras), o Travis não é realmente uma opção para nós (não há como conceder a eles acesso de gravação ao nosso projeto GitHub). Se eu estivesse escrevendo algumas jóias, pularia no Travis em um instante, mas não nos sites reais do Rails.
TALlama # 19/12
2
Apenas para constar, o Travis CI lançará em breve uma versão PRO (paga e privada) que já está na versão beta. É um pouco sobre o lado caro para pequenos projetos em US $ 129 e US $ 249 por mês, mas vale a pena ter um olhar: travis-ci.com
Joshua Pinter
41

E o CruiseControl.rb ?

A mesma multidão que fez CruiseControl(thinkworks) e escreveu Ruby. Muito fácil de usar Rakepara integrar suas outras ferramentas e pode usar a gema ruby-growl para suas notificações.

craigb
fonte
Eu tive problemas para fazer isso funcionar no Windows ... não funcionou como anunciado no vídeo "não pode ser tão fácil" no site para mim.
Gishu 21/10/08
Eu não ficaria impressionado com a marca da thinkworks - julgue por seus méritos.
Dafydd Rees
este projecto só recentemente mantido e não lançou uma nova versão desde 2009 ... mas funciona ..
Scott Schulthess
3
O controle de cruzeiros é muito primitivo e muito desatualizado.
bragboy
1
Considerando os vários eventos relacionados à segurança até o início de fevereiro (2013), deixar o CruiseControl.rb em sua configuração padrão (versões Gem, etc.) é inescrupuloso. Consegui fazê-lo rodar no Rails 3.0.20, mas o 3.2.11+ aparentemente exige muito mais trabalho. Neste ponto, estou muito aberto a alternativas, com uma lista de requisitos muito semelhante à de Jim Fiorato.
Jeff Dickey
27

Você também pode considerar o Hudson . Ele foi projetado para uso em projetos Java, embora exista uma grande variedade de plug-ins disponíveis, incluindo suporte para Ruby e Rake. Possui uma interface da web muito útil e suporta notificações por e-mail e muitas outras (como o twitter ou lâmpadas gigantes de urso).

A comunidade também é muito ativa e existem vários artigos sobre como conectar o Hudson ao Selenium, que podem ser úteis para testar aplicativos Rails no lado do navegador.

Outro olhar é o Team City, que é gratuito para pequenos projetos e equipes (incluindo comerciais). Eu realmente gosto do Team City e já o usei antes para outros projetos, mas atualmente estamos usando o Mercurial para controle de origem e o suporte do Team City era um pouco beta quando estávamos considerando.

Eu mudei do CruiseControl.net para o Team City e fiquei absolutamente chocado com a melhoria. Mas sou parcial com o Hudson devido ao seu conjunto de recursos semelhantes e à comunidade muito ativa.

Julian
fonte
2
+1 para TC. Mãos a melhor CI que eu já vi
Matt Briggs
4
Esteja avisado de que há algumas coisas políticas acontecendo para Hudson devido a, vamos chamar de diferenças criativas, com a Oracle. A maior parte dos desenvolvedores parece estar se movendo com o garfo, que será chamado Jenkins; A Oracle tem equipe e continuará a apoiar e desenvolver o Hudson.
dondo 31/01
4
Bom ponto dondo. Para aqueles interessados ​​em acompanhar o desenvolvimento contínuo de Hudson, você pode conferir Jenkins em jenkins-ci.org
Julian
E aqui está uma comparação da atividade de desenvolvimento de Jenkins x Hudson: ohloh.net/p/compare?project_0=Jenkins&project_1=Hudson
Vanuan
13

O Circle é um serviço avançado de IC para Rails (e outros aplicativos da web). Na sua lista, ele suporta o seguinte:

  • Integração Git and Test :: Unit ( também integrações RSpec, Cucumber, Jasmine, Konacha e suporta comandos de teste extras arbitrários )
  • Integração com Rake e / ou Capistrano ( usa o Rake para executar comandos e configurar DBs, oferecer suporte à implantação contínua usando Capistrano ou Heroku, ou qualquer coisa realmente )
  • Uma interface da web mostrando o status da construção
  • Notificação por email de construções com falha.
  • Notificação da área de trabalho ( por meio do CCMenu / CCTray )
  • API REST para status de construção
  • Estrutura de plug-in para executar outras ferramentas de análise de código e relatar resultados na interface do usuário ( podemos executar comandos e suporte arbitrários, incluindo seu status como parte da compilação )

Joel e eu conversamos sobre isso no podcast Stackoverflow - confira !


Isenção de responsabilidade: Paul Biggar fundou a Circle como ele afirma em seu perfil no Stackoverflow

Paul Biggar
fonte
8

O Semaphore é um novo aplicativo de CI hospedado para aplicativos Ruby e Rails. Ele se integra ao GitHub, não requer configuração e possui uma interface simples.

marko
fonte
Estamos usando o Semaphore como parte do conjunto de CIs e ele funciona de maneira fantástica. Você pode ver como ele está integrado a outros softwares como Jasmine e HipChat em uma das postagens do nosso blog . A operação também mencionou o uso do Capistrano como ferramenta de implantação. Nós o usamos no passado, mas era muito lento para nós, então mudamos para Mina .
Denis.arunovic 17/02/2014
8

Atualizado em fevereiro de 2015

Codeship

Havia uma falta de desenvolvimento no Drone.io, então mudei para Codeship e estou gostando bastante. É desenvolvido e aprimorado ativamente, possui um excelente design e é muito rápido. Além disso, para o nível inferior, ele é realmente gratuito (até 100 compilações por mês), por isso acabou sendo mais barato que o Drone.io.

Resposta original

Drone.io

Acabei de configurar nosso principal aplicativo Ruby on Rails com http://drone.io/ . Foi um pedaço de bolo e tem uma ótima interface. Eu diria que vale a pena conferir se você está procurando uma solução simples e hospedada .

Joshua Pinter
fonte
7

Confira Tddium . O Tddium suporta integração contínua, implantação e teste interativo de aplicativos Ruby. Ele fornece um ambiente gerenciado com suporte para Selenium, Headless Webkit e Solr. Hospeda instâncias ao vivo do Postgres, MySQL, Mongo e Redis. E paraleliza automaticamente grandes suítes de testes.

Jay Moorthi
fonte
5
Jay, você pode expor sua associação aos laboratórios tddium e solano. De acordo com a FAQ : "você deve divulgar sua afiliação em suas respostas"
tgf
7

O Travis CI se tornou popular no mundo dos rubis: http://travis-ci.org/

Vanuan
fonte
O Travis CI é bom para projetos de código aberto, mas não para os de código fechado. Jenkins pode cobrir ambos os casos :-)
Gabor Garami
1
Mas não é de código aberto? github.com/travis-ci/travis-ci Você não pode simplesmente configurar sua instância privada do travis como faz com o jenkins?
Vanuan
Você provavelmente poderia, mas no Leia-me, eles recomendam isso e mencionam que ainda não é um bom ajuste para hospedagem privada.
Andrew
Agora está tudo bem para projetos fechados
aehlke
6

Como várias pessoas, eu era um grande fã do cruisecontrol.rb, mas recentemente mudei meus projetos para o Integrity .

Leve e fácil de configurar (muito parecido com cc.rb), mas com uma interface melhor.

Csexton
fonte
5
Eu apenas tentei configurar o Integrity e está uma bagunça.
Lawrence
5

BigTuna - escrito em Ruby, usa Rails e se usando como seu IC.

oma
fonte
3
Esteja ciente de que o link appelier.com do BigTuna é um link morto para um domínio expirado. O projeto agora pode ser encontrado no Github .
Jeff Dickey
5

Você pode dar uma olhada na Codeship e ver se ela funciona para você (eu sou um dos fundadores)

Integração e implantação contínua baseada em nuvem (com suporte especial ao Heroku)

Os quatro primeiros itens já estão implementados e funcionam bem para várias empresas

  • A óbvia integração Git / SVN e Test :: Unit
  • Integração com Rake e / ou Capistrano
  • Uma interface da web mostrando o status da construção
  • Notificação por email de construções com falha.

Também estamos trabalhando nesses recursos:

  • Notificação na área de trabalho (potencialmente através do Growl)
  • API REST para status de construção
  • Estrutura de plug-in para executar outras ferramentas de análise de código e relatar resultados na interface do usuário
Florian Motlik
fonte
3

Faça Você Mesmo. Escreva um script bash para executar testes e, em seguida, execute um procedimento de implantação, se os testes forem aprovados. Precisa de notificações? Envie um e-mail em texto simples sobre sucesso / fracasso. Precisa de agendador? Cronjob. Isso é $ 0 / mês., E você terá uma idéia do que está fazendo. Não vejo como pagar a alguém US $ 40 / mês me ajudará a fazer isso de maneira mais eficiente.

Considere, por exemplo: minha implantação está falhando devido a um pipeline de ativos configurado incorretamente (os ativos falham ao pré-compilar). Isso não será detectado por unidade, funcional, integração, regressão ou qualquer outro teste. Este erro não será detectado pelo IC. A quantidade de tempo que eu gastaria escrevendo um script bash provavelmente será menor que a quantidade de tempo que gastaria configurando um ambiente de IC e economizarei US $ 40 / mês.

Juuuuuust jogando meus dois centavos na discussão; )

Victor Pudeyev
fonte
1

Código de execução Executar pode ser o que você precisa.

Editar: link removido, pois não se refere mais ao antigo site Run Code Run.

Todd Stout
fonte
1
Agora prestes a ser desligado. :(
Andrew Grimm
1

E então, há CI Joe :

É como uma velha caminhonete enferrujada: pode ser fedorento e nojento, mas faz o trabalho.

Nós o usamos diariamente.

Hakan Ensari
fonte
1

Eu só gosto da CI Joe, tive problemas com todo o resto, CI Joe é o mínimo absoluto para fazer o trabalho, super ágil e confiável. A fonte de hudson é horrível e a interface do usuário não me agrada.

Brent Greeff
fonte
0

Acabei de publicar um aplicativo de integração contínua muito simples para RubyOnRails + SVN / GIT. Talvez você deva tentar:

http://github.com/felipegiotto/Inotegration/tree/master

Tomei algumas idéias de ferramentas de medição e teste e, depois de experimentar algumas ferramentas de CI e não gostar de nenhuma delas, decidi criar minhas próprias, sem precisar criar grandes arquivos XML ou qualquer outra configuração. Do jeito que o Rails foi feito para ser.

Se você gosta, por favor me envie algum feedback ..

Cumprimentos,

Felipe Giotto.


fonte
0

A execução do IC após cada confirmação parecerá bastante cara se você se inscrever na filosofia "confirmar frequentemente". Que tal executar um cronjob simples a cada poucas horas e enviar os resultados por e-mail para uma lista de discussão de desenvolvimento?

JasonOng
fonte
Ou então, que tal configurar seu servidor de IC para pesquisar apenas alterações uma vez a cada hora? A maioria dos aplicativos de IC suporta essa configuração.
jerhinesmith
2
Com o git, você pode cometer frequentemente, mas forçar raramente.
Vanuan 19/03/12
0

Acabei de configurar um Hudson / Jenkins para ele. A gema ci_reporter pode ajudar a formatar a saída JUnit, o que é esperado pelo Hudson, e o Hudson possui um plug-in Rails, para que eu possa ver a cobertura rcov, relatórios de testes, estatísticas de trilhos e muito mais.

Gabor Garami
fonte
Você poderia comparar sua configuração com as outras alternativas?
Andrei
Como uso o Rails 2.3.x nos meus projetos de produção, atualmente não, porque a outra alternativa requer o Rails 3.x. No entanto, quando puder, testarei e publicarei minhas experiências.
Gabor Garami
Também tentei o Jenkins com o Rails 3.x e funciona muito bem. Também tentei outras soluções (por exemplo, IntegrityApp), mas como também usei o Jenkins para testar outros projetos, ele se tornou a solução final. Isso não significa que o IntegrityApp ou outros itens sejam ruins, o IntegrityApp é muito bom, mas eu gosto mais do Jenkins.
Gabor Garami
0

Você também deve considerar o CloudMunch. Isso fornece uma plataforma poliglota para permitir que você tenha idiomas diferentes como parte da sua base de código, com um rico conjunto de metadados de compilação.

Prasanna
fonte