ruby-on-rails - what - travis github
IntegraciĆ³n continua para Ruby on Rails (23)
Actualizado Feb-2015
Codeship
Hubo una falta de desarrollo en Drone.io así que cambié a Codeship y lo estoy disfrutando completamente. Está activamente desarrollado y mejorado, tiene un gran diseño y es muy rápido. Además, para el nivel inferior, en realidad es gratis (hasta 100 compilaciones por mes), por lo que terminó siendo más barato que Drone.io.
Respuesta original
http://drone.io/
Acabo de configurar nuestra aplicación principal Ruby on Rails con http://drone.io/ . Fue un pedazo de pastel y tiene una gran interfaz. Diría que vale la pena consultar si estás buscando una solución simple y alojada .
He estado buscando una solución de integración continua para Ruby on Rails, pero no he estado muy satisfecho con los resultados. Venía de una tienda .NET que usaba CruiseControl.NET y estaba realmente malcriada por su facilidad de uso y por su rico estado / informes.
Idealmente estoy buscando:
La integración obvia de Git / SVN y Test :: Unit
Integración con Rake y / o Capistrano
Una interfaz web que muestra el estado de la construcción
Notificación por correo electrónico de compilaciones fallidas.
Notificación de escritorio (potencialmente a través de Growl)
REST API para construir estados
Marco de complemento para ejecutar otras herramientas de análisis de código y reportar resultados en la interfaz de usuario
¿Qué tal CruiseControl.rb ?
La misma multitud que hizo CruiseControl
(thoughtworks) y escrita en Ruby
. Rake
muy fácil de usar para integrar sus otras herramientas, y puede usar la gema ruby-growl para sus notificaciones.
Acabo de configurar un Hudson / Jenkins para eso. La gema ci_reporter puede ayudar a formatear la salida de JUnit, lo que espera Hudson, y Hudson tiene un plugin Rails, por lo que puedo ver la cobertura de rcov, informes de prueba, estadísticas de rieles y mucho más.
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 herramientas de medición y prueba y, después de probar algunas herramientas de CI y de que no me gustaba ninguna de ellas, decidí crear la mía, sin necesidad de crear grandes archivos XML ni ninguna otra configuración. Justo como Rails estaba hecho para ser.
Si lo desea, por favor envíeme un comentario.
Atentamente,
Felipe Giotto.
Acabo de revisar las opciones aquí y pensé en enrollarlas a fines de 2011.
Integrity
Después de una experiencia cercana a la muerte que dejó el website aún enlazado con información desactualizada y derribó el sitio de demostración, este proyecto tiene una chispa de vida otra vez. Pero la documentación no ha avanzado, y muchos de los pasos en el tutorial simplemente se rompen ; Tuve que cambiar las referencias a las gemas, crear algunas cosas fuera de banda, y luego todavía no podía hacerlo funcionar .
Cruise Control.rb
Simplemente simple : simplemente descárguelo, ejecute una línea de comando para agregar su proyecto (no hay interfaz de usuario para hacerlo) y ejecute la aplicación Rails. Pero tampoco hay una interfaz de usuario para editar su proyecto, y no existe una integración real con los artefactos de construcción además de mostrar enlaces a ellos: no se obtienen gráficos de las pruebas, ni líneas de tendencia, etc. También tuve que ajustar el archivo routes.rb
para conseguir que funcione el enlace del código (los resources :projects
línea de resources :projects
necesita moverse debajo de todas las otras rutas no predeterminadas).
TeamCity
Esto se ve increíble , pero la escala salarial parece fuera de sintonía. 3 agentes gratis y luego cuando eres dependiente necesitas repartir cientos de dólares. Personal Builds se ve muy bien, pero no tiene el presupuesto .
Jenkins (née Hudson )
Este es un incondicional de Java y está cargado con mil opciones , por lo que la interfaz de usuario es confusa y es una tarea ardua para configurar sus proyectos . Pero una vez que lo configuras, obtienes una gran cantidad de complementos que pueden extraerse de la mayoría en cualquier lugar, ejecutar casi cualquier cosa e informar casi todo. El instalador de OS X señala a Jenkins en /Users/Shared/Jenkins/Home
pero no crea ese directorio ni lo chown
en daemon
(que se usa de forma predeterminada, y debe cambiar a un nuevo usuario de jenkins
para que pueda configurar la integración de GitHub) .
Otros
Realmente no probé esto, pero pensé que mencionaría por qué:
- CI Joe quiere tener el repositorio de GitHub más de lo que yo quiero, y sus creadores ni siquiera lo están usando; están en Jenkins.
- Cerberus parece bastante pequeño, pero no tiene una IU y no publica automáticamente artefactos de construcción donde otros puedan verlos.
- BigTuna parece ser un clon de CruiseControl.rb sin el apoyo de la comunidad (ya mínimo).
- Bamboo ve muy bien si usas JIRA y BitBucket, pero 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.
Al igual que varias personas, era un gran fanático de cruisecontrol.rb, pero recientemente cambié mis proyectos a website .
Ligero y fácil de instalar (muy parecido a cc.rb), pero con una interfaz más agradable.
Deberías 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 una gran cantidad de metadatos de compilación.
Echa un vistazo a Tddium . Tddium admite la integración continua, el despliegue y las pruebas interactivas de las aplicaciones de 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 suites de prueba.
Ejecutar CI después de cada commit parece bastante caro si te suscribes a la filosofía de "commit often". ¿Qué hay de ejecutar un cronjob simple cada pocas horas y enviar los resultados por correo electrónico a una lista de correo dev?
Es posible que también desee considerar Hudson . Está diseñado para usar con proyectos de 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 muchas otras (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 Hudson con Selenium, que puede ser útil para probar aplicaciones de Rails en el lado del navegador.
Otra mirada es TeamCity que es gratis para pequeños proyectos y equipos (incluido comercial). Realmente me gusta Team City y lo he usado antes para otros proyectos, pero actualmente estamos usando Mercurial para control de fuente y el soporte de Team City era un poco demasiado beta cuando lo estábamos considerando.
Cambié de CruiseControl.net a Team City y me sorprendió la mejora. Aunque soy parcial con Hudson por su conjunto de características similares y su comunidad muy activa.
Hazlo tu mismo. Escriba un script bash para ejecutar pruebas y luego ejecute un procedimiento de implementación si pasan las pruebas. ¿Necesita notificaciones? Dispárate un correo electrónico de texto claro sobre éxito / fracaso. ¿Necesita un programador? Cronjob. Esto es $ 0 / mes, y usted tendrá una idea de lo que está haciendo. No veo cómo pagarle a alguien $ 40 / mes me ayudará a hacer esto de una manera más eficiente.
Tenga en cuenta, por ejemplo: mi implementación está fallando debido a una canalización de activos configurada incorrectamente (los activos no pueden precompilar). Esto no se detectará con unidades, funciones, integración, regresión o cualquier otra prueba. Este error no será capturado por CI. La cantidad de tiempo que me gustaría dedicarme a escribir un script bash probablemente sea menor que la cantidad de tiempo que me gustaría dedicar a configurar un entorno de CI, y me ahorraré $ 40 / mes.
Juuuuuu lanzando mis dos centavos en la discusión; )
La integridad parece ser una gran solución. Despliegue en heroku es muy sencillo: http://elabs.se/blog/7-continuous-integration-testing-for-ruby-on-rails-with-integrity http://integrityapp.com
Nadie aquí mencionó el bambú de Atlassian. Hay un buen artículo tipo tutorial sobre Ruby on Rails CI que usa Bamboo:
http://blogs.atlassian.com/news/2009/05/bamboo_customer_8.html
Por favor, eche un vistazo a http://teamcitydev.blogspot.com/2008/11/most-advanced-continuous-integration.html
Puedes darle un giro a Codeship y ver si funciona para ti (soy uno de los fundadores)
Integración e implementación continuas basadas en la nube (con soporte especial de Heroku)
Los primeros cuatro de sus artículos ya están implementados y funcionan bien para una serie de empresas
- La integración obvia de Git / SVN y Test :: Unit
- Integración con Rake y / o Capistrano
- Una interfaz web que muestra el estado de la construcción
- Notificación por correo electrónico de compilaciones fallidas.
Estamos trabajando en esas características también:
- Notificación de escritorio (potencialmente a través de Growl)
- REST API para construir estados
- Marco de complemento para ejecutar otras herramientas de análisis de código y reportar resultados en la interfaz de usuario
Run Code Run puede ser lo que necesites.
Editar: se eliminó el enlace porque ya no hace referencia al anterior sitio Run Run Run.
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 Hudson es horrible, y la interfaz de usuario no me atrae.
Travis CI se ha hecho popular en el mundo de ruby: http://travis-ci.org/
Y luego, está CI Joe :
Es como una vieja camioneta oxidada: puede ser maloliente y asquerosa, pero hace el trabajo bien.
Lo usamos a diario.
cruisecontrol.rb sería la combinación perfecta entonces.
BigTuna : escrito en Ruby, usa Rails y se usa a sí mismo como su CI.
Circle es un servicio avanzado de CI para Rails (y otras aplicaciones web). De su lista, es compatible con lo siguiente:
- Integración de Git and Test :: Unit ( también integraciones RSpec, Cucumber, Jasmine, Konacha, y admite comandos arbitrarios de prueba adicional )
- Integración con Rake y / o Capistrano ( utiliza 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 construcción
- Notificación por correo electrónico de compilaciones fallidas.
- Notificación de escritorio (a través de CCMenu / CCTray )
- REST API para construir estados
- Marco de complementos para ejecutar otras herramientas de análisis de código y generar informes de 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 . ¡ Compruébalo !
(Editar) Descargo de responsabilidad: Paul Biggar fundó Circle como dice en su perfil de
Semaphore es una nueva aplicación alojada de CI para aplicaciones de Ruby and Rails. Se integra con GitHub, no requiere configuración y tiene una interfaz de usuario simple.