¿Integración continua para Ruby on Rails? [cerrado]

149

He estado buscando una solución de integración continua para Ruby on Rails, pero no estoy muy satisfecho con los resultados. Vengo de una tienda .NET que usaba CruiseControl.NET y estaba realmente mimado por su facilidad de uso y su rico estado / informes.

Idealmente estoy buscando:

  • Lo obvio Git / SVN y Test :: Unidad de integración

  • Integración con Rake y / o Capistrano

  • Una interfaz web que muestra el estado de la compilación

  • Notificación por correo electrónico de compilaciones fallidas.

  • Notificación de escritorio (potencialmente a través de Growl)

  • API REST para estados de compilación

  • Marco de complementos para ejecutar otras herramientas de análisis de código e informar resultados en la interfaz de usuario

Jim Fiorato
fuente
11
Entonces, ¿cuál es tu elección ahora, tres años después?
Andrei
3
¿Puedo sugerir circleci.com ?
Paul Biggar

Respuestas:

83

Acabo de revisar las opciones aquí y pensé en enrollarlas a fines de 2011.

Integridad

Después de una experiencia cercana a la muerte que dejó el sitio web aún vinculado con información desactualizada y derribó el sitio de demostración, este proyecto tiene una chispa de vida nuevamente. Pero la documentación no se ha movido, y muchos, muchos de los pasos en el tutorial están simplemente rotos ; Tuve que cambiar las referencias a las gemas, construir algunas cosas fuera de la banda, y luego todavía no pude hacerlo funcionar .

Cruise Control.rb

Muy simple : simplemente lo descarga, ejecuta una línea de comando para agregar su proyecto (no hay interfaz de usuario para hacerlo) y ejecuta la aplicación Rails. Pero tampoco hay una interfaz de usuario para editar su proyecto, y no hay una integración real con los artefactos de construcción, aparte de mostrar enlaces a ellos: no obtiene gráficos de pruebas ejecutadas, ni líneas de tendencia, etc. También tuve que ajustar el routes.rbarchivo para obtener el código de enlace de trabajo (la resources :projectslínea debe moverse debajo de todas las otras rutas no predeterminadas).

TeamCity

Esto se ve increíble , pero la escala salarial parece fuera de control. 3 agentes gratis y luego, cuando eres dependiente, necesitas repartir cientos de dólares. Las construcciones personales se ven geniales, pero no tienen el presupuesto .

Jenkins (née Hudson )

Este es un incondicional de Java y está cargado con miles de opciones , por lo que la interfaz de usuario es confusa y es una tarea ardua configurar sus proyectos . Pero una vez que lo configura, obtiene una gran cantidad de complementos que pueden extraerse de casi cualquier lugar, ejecutar casi cualquier cosa e informar casi todo. El instalador de OS X señala a Jenkins /Users/Shared/Jenkins/Homepero no puede crear ese directorio o chownlo hace daemon(que se usa de forma predeterminada, y debe cambiar a un nuevo jenkinsusuario para poder configurar la integración de GitHub).

Otros

Realmente no probé estos, pero pensé en mencionar por qué:

  • CI Joe quiere tener el repositorio de GitHub más de lo que yo quiero, y sus creadores ni siquiera lo usan; Están en Jenkins.
  • Cerberus parece muy pequeño, pero no tiene una interfaz de usuario y no publica automáticamente artefactos de construcción donde otros puedan verlos.
  • BigTuna parece ser un clon de CruiseControl.rb sin el apoyo (ya mínimo) de la comunidad.
  • Bamboo se ve muy bien si usas JIRA y BitBucket, pero nosotros no usamos ninguno. Se despliega pero ya tenemos los configurados en Capistrano.

La elección

Fuimos con Jenkins , pero realmente desearía que una de las soluciones más livianas hubiera funcionado.

TALlama
fuente
8
¿Qué hay de travis?
Vanuan
3
Trabajo en un proyecto de código cerrado, así que a menos que no comprenda mal su documentación (mal redactada), Travis no es realmente una opción para nosotros (de ninguna manera les estoy otorgando acceso de escritura a nuestro proyecto GitHub). Si estuviera escribiendo algunas gemas, saltaría sobre Travis en un instante, pero no para sitios reales de Rails.
TALlama
2
Solo para que conste, Travis CI pronto lanzará una versión PRO (de pago y privada) que ya está en Beta. Es un poco caro para pequeños proyectos a $ 129 y $ 249 por mes, pero vale la pena echarle un vistazo: travis-ci.com
Joshua Pinter
41

¿Qué tal CruiseControl.rb ?

La misma multitud que hizo CruiseControl( aunque trabajos ) y escrita Ruby. Muy fácil de usar Rakepara integrar sus otras herramientas, y puede usar la gema ruby-growl para sus notificaciones.

craigb
fuente
He tenido problemas para que esto se ejecute en Windows ... no funcionó como se anuncia en el video 'no puede ser tan fácil' en el sitio para mí.
Gishu
No me dejaría influir por la marca de la red de trabajo, juzga por sus méritos.
Dafydd Rees
Este proyecto se ha mantenido recientemente y no ha lanzado una nueva versión desde 2009 ... pero funciona ...
Scott Schulthess
3
El control de crucero es muy primitivo y muy anticuado.
fanfarrón
1
Dados los diversos eventos relacionados con la seguridad hasta principios de febrero (2013), dejar CruiseControl.rb en su configuración predeterminada (versiones de Gem, etc.) es inconcebible. He podido ejecutarlo en Rails 3.0.20, pero 3.2.11+ aparentemente requerirá mucho más trabajo. En este punto, estoy muy abierto a las alternativas, con una lista de requisitos muy similar a la de Jim Fiorato.
Jeff Dickey
27

También es posible que desee considerar Hudson . Está diseñado para su uso con proyectos Java, aunque hay una gran selección de complementos disponibles, incluido el soporte para Ruby y Rake. Tiene una interfaz web muy útil y admite notificaciones por correo electrónico, así como muchos otros (como twitter o lámparas gigantes de oso).

La comunidad también es muy activa y ha habido varios artículos sobre la conexión de Hudson con Selenium que podrían ser útiles para probar las aplicaciones de Rails en el lado del navegador.

Otro vistazo es Team City, que es gratuito para pequeños proyectos y equipos (incluidos los comerciales). Realmente me gusta Team City y lo he usado antes para otros proyectos, pero actualmente estamos usando Mercurial para el control de origen y el soporte de Team City era demasiado beta cuando lo estábamos considerando.

Cambié de CruiseControl.net a Team City y quedé absolutamente sorprendido por la mejora. Sin embargo, soy parcial con Hudson debido a su conjunto de características similares y a su comunidad muy activa.

Julian
fuente
2
+1 para TC. Sin duda, el mejor IC que he visto
Matt Briggs
44
Tenga en cuenta que hay algunas cosas políticas que están cayendo para Hudson debido a, uh, lo llamaremos diferencias creativas, con Oracle. La mayor parte de los desarrolladores parecen moverse con la bifurcación que se llamará Jenkins; Oracle tiene personal y continuará apoyando y desarrollando Hudson.
Dondo
44
Buen punto dondo. Para aquellos interesados ​​en seguir el desarrollo continuo de Hudson, pueden visitar Jenkins en jenkins-ci.org
Julian
Y aquí hay una comparación de la actividad de desarrollo de Jenkins vs Hudson: ohloh.net/p/compare?project_0=Jenkins&project_1=Hudson
Vanuan
13

Circle es un servicio de CI avanzado para Rails (y otras aplicaciones web). De su lista, admite lo siguiente:

  • Git and Test :: Integración de unidades ( también integraciones RSpec, Cucumber, Jasmine, Konacha y admite comandos de prueba adicionales arbitrarios )
  • Integración con Rake y / o Capistrano ( usa Rake para ejecutar comandos y configurar bases de datos, admite despliegue continuo usando Capistrano o Heroku, o cualquier cosa realmente )
  • Una interfaz web que muestra el estado de la compilación
  • Notificación por correo electrónico de compilaciones fallidas.
  • Notificación de escritorio (a través de CCMenu / CCTray )
  • API REST para estados de compilación
  • Marco de complementos para ejecutar otras herramientas de análisis de código e informar resultados en la interfaz de usuario ( podemos ejecutar comandos arbitrarios y soporte, incluido su estado como parte de la compilación )

Joel y yo pasamos un rato charlando sobre esto en el podcast de Stackoverflow . ¡ Compruébalo !


(editar) Descargo de responsabilidad: Paul Biggar fundó Circle como afirma en su perfil de Stackoverflow

Paul Biggar
fuente
8

Semaphore es una nueva aplicación de CI alojada para aplicaciones Ruby and Rails. Se integra con GitHub, no requiere configuración y tiene una interfaz de usuario simple.

marko
fuente
Estamos utilizando Semaphore como parte de la suite de CI y funciona de maravilla. Puede ver cómo se integra con otro software como Jasmine e HipChat en una de nuestras publicaciones de blog . La operación también mencionó el uso de Capistrano como herramienta de implementación. Lo usamos en el pasado, pero era demasiado lento para nosotros, así que nos cambiamos a Mina .
denis.arunovic
8

Actualizado en febrero de 2015

Codeship

Hubo una falta de desarrollo en Drone.io, así que me cambié a Codeship y lo estoy disfrutando mucho. Se ha desarrollado y mejorado activamente, tiene un diseño excelente y es muy rápido. Además, para el nivel inferior es realmente gratuito (hasta 100 compilaciones por mes), por lo que terminó siendo más barato que Drone.io.

Respuesta original

Drone.io

Acabo de configurar nuestra aplicación principal Ruby on Rails con http://drone.io/ . Fue pan comido y tiene una gran interfaz. Diría que vale la pena echarle un vistazo si está buscando una solución simple y alojada .

Joshua Pinter
fuente
7

Echa un vistazo a Tddium . Tddium admite integración continua, implementación y pruebas interactivas de aplicaciones Ruby. Proporciona un entorno administrado con soporte para Selenium, Headless Webkit y Solr. Aloja instancias en vivo de Postgres, MySQL, Mongo y Redis. Y paraleliza automáticamente grandes conjuntos de pruebas.

Jay Moorthi
fuente
55
Jay, quizás quieras exponer tu asociación con tddium y solano labs. Según las preguntas frecuentes : "debe revelar su afiliación en sus respuestas"
tgf
7

Travis CI se ha vuelto popular en el mundo del rubí: http://travis-ci.org/

Vanuan
fuente
Travis CI es bueno para proyectos de código abierto pero no realmente para proyectos de código cerrado. Jenkins puede cubrir ambos casos :-)
Gabor Garami
1
¿Pero no es de código abierto? github.com/travis-ci/travis-ci ¿No puedes configurar tu instancia de travis privada como lo haces con jenkins?
Vanuan
Probablemente podría, pero en el archivo Léame, recomiendan no mencionarlo y mencionan que aún no es una buena opción para el alojamiento privado.
Andrew
Ahora está bien para proyectos cerrados
aehlke
6

Como muchas personas, era un gran admirador de cruisecontrol.rb, pero recientemente cambié mis proyectos a Integrity .

Ligero y fácil de configurar (al igual que cc.rb), pero con una interfaz más agradable.

csexton
fuente
55
Intenté configurar Integrity y es un desastre.
Lawrence
5

BigTuna : escrito en Ruby, usa Rails y se usa a sí mismo como CI.

oma
fuente
3
Tenga en cuenta que el enlace appelier.com para BigTuna es un enlace inactivo a un dominio caducado. El proyecto ahora se puede encontrar en Github .
Jeff Dickey
5

Puedes dar Codeship un giro a y ver si te funciona (yo soy uno de los fundadores)

Integración continua e implementación en la nube (con soporte especial de Heroku)

Los primeros cuatro elementos ya están implementados y funcionan bien para varias empresas.

  • Lo obvio Git / SVN y Test :: Unidad de integración
  • Integración con Rake y / o Capistrano
  • Una interfaz web que muestra el estado de la compilación
  • Notificación por correo electrónico de compilaciones fallidas.

También estamos trabajando en esas características:

  • Notificación de escritorio (potencialmente a través de Growl)
  • API REST para estados de compilación
  • Marco de complementos para ejecutar otras herramientas de análisis de código e informar resultados en la interfaz de usuario
Florian Motlik
fuente
3

Hazlo tu mismo. Escriba un script bash para ejecutar pruebas y luego ejecute un procedimiento de implementación si las pruebas pasan. ¿Necesitas notificaciones? Envíe un correo electrónico de texto sin formato en caso de éxito / fracaso. ¿Necesita un planificador? Cronjob. Esto es $ 0 / mes, y tendrá una idea de lo que está haciendo. No veo cómo pagarle a alguien $ 40 / mes me ayudará a hacer esto de manera más eficiente.

Considere, por ejemplo: mi implementación falla debido a una canalización de activos configurada incorrectamente (los activos no se pueden precompilar). Esto no se detectará con pruebas unitarias, funcionales, de integración, de regresión o de cualquier otro tipo. Este error no será detectado por CI. Es probable que la cantidad de tiempo que pasaría escribiendo un script bash sea menor que la cantidad de tiempo que pasaría configurando un entorno de CI, y me ahorraré $ 40 / mes.

Juuuuuust arrojando mis dos centavos a la discusión; )

Victor Pudeyev
fuente
1

Run Code Run podría ser lo que necesita.

Editar: enlace eliminado ya que ya no se refiere al antiguo sitio Run Code Run.

Todd Stout
fuente
1
Ahora a punto de ser cerrado. :(
Andrew Grimm
1

Y luego, está CI Joe :

Es como una vieja camioneta oxidada: puede ser maloliente y asqueroso, pero hace el trabajo.

Lo usamos a diario.

Hakan Ensari
fuente
1

Solo me gusta CI Joe, he tenido problemas con todo lo demás, CI Joe es el mínimo absoluto para hacer el trabajo, súper ágil y confiable. La fuente de Hudson es horrible, y la interfaz de usuario no me atrae.

Brent Greeff
fuente
0

Acabo de publicar una aplicación de integración continua muy simple para RubyOnRails + SVN / GIT. Tal vez deberías intentarlo:

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

Tomé algunas ideas de medición y herramientas de prueba y, después de probar algunas herramientas de CI y no gustarme ninguna de ellas, decidí construir la mía, sin necesidad de construir grandes archivos XML o cualquier otra configuración. Justo como Rails fue hecho para ser.

Si lo desea, por favor envíeme algunos comentarios.

Atentamente,

Felipe Giotto.


fuente
0

Ejecutar CI después de cada confirmación parece bastante costoso si se suscribe a la filosofía de "confirmación frecuente". ¿Qué tal ejecutar un cronjob simple cada pocas horas y enviar los resultados por correo electrónico a una lista de correo de desarrollo?

JasonOng
fuente
O, ¿qué tal si configura su servidor CI para sondear solo los cambios una vez cada hora? La mayoría de las aplicaciones de CI admiten esta configuración.
Jerhinesmith
2
Con git puedes comprometerte con frecuencia pero presionar raramente.
Vanuan
0

Acabo de configurar un Hudson / Jenkins para ello. La gema ci_reporter puede ayudar a formatear la salida JUnit, lo que espera Hudson, y Hudson tiene un complemento Rails, por lo que puedo ver la cobertura rcov, informes de prueba, estadísticas de rails y aún más.

Gabor Garami
fuente
¿Podría comparar su configuración con las otras alternativas?
Andrei
Como uso Rails 2.3.x para mis proyectos de producción, actualmente no, porque la otra alternativa más requiere Rails 3.x. Sin embargo, cuando pueda, lo probaré y publicaré mis experiencias.
Gabor Garami
También probé Jenkins con Rails 3.x y funciona muy bien. También probé otras soluciones (por ejemplo, IntegrityApp), pero como utilizo Jenkins para probar otros proyectos también se convirtió en la solución final. No significa que IntegrityApp u otras cosas sean malas, IntegrityApp es muy bueno, sin embargo, me gusta Jenkins un poco más.
Gabor Garami
0

Debería considerar mirar CloudMunch también. Esto proporciona una plataforma políglota que le permite tener diferentes idiomas como parte de su base de código, con un amplio conjunto de metadatos de compilación.

Prasanna
fuente