Pregunta

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 :: Unit 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

¿Fue útil?

Solución

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

Integrity

Después de una experiencia cercana a la muerte que dejó el sitio web aún vinculado a 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 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 podía hacer que funcionara .

Cruise Control.rb

Muerto simple : simplemente lo descarga, ejecuta una línea de comandos para agregar su proyecto (no hay IU para hacerlo) y ejecute la aplicación Rails. Pero tampoco hay una interfaz de usuario para editar su proyecto, y no hay integración real con artefactos de compilación , aparte de mostrar enlaces a ellos: no obtiene gráficos de pruebas ejecutadas, no hay líneas de tendencia, etc. También tuve para ajustar el archivo route.rb para que el código funcione correctamente (la línea resources: projects debe moverse debajo de todas las demás rutas no predeterminadas).

TeamCity

Esto se ve increíble , pero la escala salarial parece fuera de control. 3 agentes libres y luego, cuando eres dependiente, necesitas repartir cientos de dólares. Compilaciones personales se ve muy bien, pero no tiene el presupuesto .

Jenkins (n & # 233; e Hudson )

Este es un punto fuerte de Java y está cargado con mil opciones , por lo que la interfaz de usuario es confusa y es una tarea configurar tus proyectos . Pero una vez que lo configuras, obtienes una gran cantidad de complementos que pueden obtenerse de la mayoría de los sitios, ejecutar casi cualquier cosa e informar de casi todo. El instalador de OS X señala a Jenkins en / Users / Shared / Jenkins / Home pero no logra crear ese directorio o chown para daemon (que es utiliza de forma predeterminada, y debe cambiarse a un nuevo usuario de jenkins para que pueda configurar la integración de GitHub).

Otros

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

  • CI Joe quiere poseer el repositorio de GitHub más de lo que quiero, y sus creadores no lo son. incluso usándolo; están en Jenkins.
  • Cerberus parece claramente pequeño pero no tiene una interfaz de usuario y no publica automáticamente artefactos de compilación donde otros puede verlos.
  • BigTuna parece ser un clon de CruiseControl.rb sin el apoyo de la comunidad (ya mínimo).
  • Bamboo se ve realmente bien si usa JIRA y BitBucket, pero no usamos ninguno. Se implementa, pero ya tenemos configurados en Capistrano.

La elección

Fuimos con Jenkins , pero realmente deseo que una de las soluciones más livianas haya funcionado.

Otros consejos

¿Qué tal CruiseControl.rb ?

La misma multitud que hizo CruiseControl (aunque las redes) y escrito en Ruby . Muy fácil de usar Rake para integrar sus otras herramientas, y puede usar el ruby -granita joya para tus notificaciones.

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 cómo conectar a Hudson con Selenium, lo que podría ser útil para probar aplicaciones 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 fuente y el soporte de Team City fue un poco 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.

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

  • Git y 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 la implementación continua 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 )
  • REST API para estados de compilación
  • Marco de complemento para ejecutar otras herramientas de análisis de código e informar resultados en la interfaz de usuario ( podemos ejecutar comandos y soporte arbitrarios, incluido su estado como parte de la compilación )

Joel y yo pasamos un rato charlando sobre esto en el Podcast de Stackoverflow - ¡compruébelo !


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

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.

Actualizado en febrero de 2015

Codeship

Hubo una falta de desarrollo en Drone.io, así que 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 de 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 .

Consulte Tddium . Tddium admite la integración continua, la implementación y las pruebas interactivas de las 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.

Travis CI se ha hecho popular en el mundo ruby: http://travis-ci.org/

cruisecontrol.rb sería la combinación perfecta entonces.

http://cruisecontrolrb.thoughtworks.com/

Al igual que algunas personas, era un gran fan de cruisecontrol.rb, pero recientemente cambié mis proyectos a Integrity .

Ligero y fácil de configurar (muy parecido a cc.rb), pero con una interfaz más agradable.

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

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

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

Los primeros cuatro de sus artículos ya están implementados y funcionan bien para varias compañías

  • La obvia integración de Git / SVN y Test :: Unit
  • 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 construcciones 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

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

La integridad parece ser una gran solución. Desplegar en heroku es una brisa: http://elabs.se/blog / 7-continuo-integración-prueba-para-rubí-sobre-rieles-con-integridad http://integrityapp.com

Hazlo tú mismo. Escriba un script bash para ejecutar pruebas y luego ejecute un procedimiento de implementación si las pruebas pasan. ¿Necesitas notificaciones? Dispárate un correo electrónico de texto simple en caso de éxito / fracaso. ¿Necesitas 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 precompilan). Esto no se detectará con pruebas unitarias, funcionales, de integración, de regresión o de cualquier otro tipo. Este error no será capturado 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; )

Ejecutar código Ejecutar podría ser lo que necesita.

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

Y luego, hay CI Joe :

  

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

Lo usamos a diario.

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.

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 un comentario ...

Saludos,

Felipe Giotto.

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

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

También debería considerar mirar CloudMunch. 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top