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
ruby-on-rails
ruby
continuous-integration
Jim Fiorato
fuente
fuente
Respuestas:
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.rb
archivo para obtener el código de enlace de trabajo (laresources :projects
lí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/Home
pero no puede crear ese directorio ochown
lo hacedaemon
(que se usa de forma predeterminada, y debe cambiar a un nuevojenkins
usuario para poder configurar la integración de GitHub).Otros
Realmente no probé estos, pero pensé en mencionar por qué:
La elección
Fuimos con Jenkins , pero realmente desearía que una de las soluciones más livianas hubiera funcionado.
fuente
¿Qué tal CruiseControl.rb ?
La misma multitud que hizo
CruiseControl
( aunque trabajos ) y escritaRuby
. Muy fácil de usarRake
para integrar sus otras herramientas, y puede usar la gema ruby-growl para sus notificaciones.fuente
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.
fuente
Circle es un servicio de CI avanzado para Rails (y otras aplicaciones web). De su lista, admite lo siguiente:
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
fuente
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.
fuente
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 .
fuente
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.
fuente
Travis CI se ha vuelto popular en el mundo del rubí: http://travis-ci.org/
fuente
cruisecontrol.rb sería la pareja perfecta entonces.
http://cruisecontrolrb.thoughtworks.com/
fuente
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.
fuente
BigTuna : escrito en Ruby, usa Rails y se usa a sí mismo como CI.
fuente
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.
También estamos trabajando en esas características:
fuente
Nadie aquí mencionó el bambú de Atlassian. Hay un buen artículo tipo tutorial sobre Ruby on Rails CI usando Bamboo:
http://blogs.atlassian.com/news/2009/05/bamboo_customer_8.html
fuente
La integridad parece ser una gran solución. Implementar en heroku es muy sencillo: http://elabs.se/blog/7-continuous-integration-testing-for-ruby-on-rails-with-integrity http://integrityapp.com
fuente
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; )
fuente
Run Code Run podría ser lo que necesita.
Editar: enlace eliminado ya que ya no se refiere al antiguo sitio Run Code Run.
fuente
Y luego, está CI Joe :
Lo usamos a diario.
fuente
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.
fuente
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
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?
fuente
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.
fuente
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.
fuente