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
ruby-on-rails
ruby
continuous-integration
Jim Fiorato
fonte
fonte
Respostas:
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.rb
arquivo para obter o código que liga o trabalho (aresources :projects
linha 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/Home
mas falha ao criar esse diretório ouchown
paradaemon
(que é usado por padrão e você deve mudar para um novojenkins
usuário para poder configurar a integração do GitHub).Outras
Eu realmente não tentei isso, mas pensei em mencionar o porquê:
A escolha
Fomos com Jenkins , mas eu realmente gostaria que uma das soluções mais leves tivesse dado certo.
fonte
E o CruiseControl.rb ?
A mesma multidão que fez
CruiseControl
(thinkworks) e escreveuRuby
. Muito fácil de usarRake
para integrar suas outras ferramentas e pode usar a gema ruby-growl para suas notificações.fonte
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.
fonte
O Circle é um serviço avançado de IC para Rails (e outros aplicativos da web). Na sua lista, ele suporta o seguinte:
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
fonte
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.
fonte
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 .
fonte
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.
fonte
O Travis CI se tornou popular no mundo dos rubis: http://travis-ci.org/
fonte
cruisecontrol.rb seria a combinação perfeita então.
http://cruisecontrolrb.thoughtworks.com/
fonte
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.
fonte
BigTuna - escrito em Ruby, usa Rails e se usando como seu IC.
fonte
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
Também estamos trabalhando nesses recursos:
fonte
Ninguém aqui mencionou o Bamboo de Atlassian. Há um bom artigo semelhante a um tutorial sobre o Ruby on Rails CI usando o Bamboo:
http://blogs.atlassian.com/news/2009/05/bamboo_customer_8.html
fonte
A integridade parece ser uma ótima solução. É fácil implantar no heroku: http://elabs.se/blog/7-continuous-integration-testing-for-ruby-on-rails-with-integrity http://integrityapp.com
fonte
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; )
fonte
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.
fonte
E então, há CI Joe :
Nós o usamos diariamente.
fonte
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.
fonte
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
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?
fonte
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.
fonte
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.
fonte