2011-08-09 37 views
21

¿Alguien sabe de una manera de hacer una integración continua con la programación R? Conozco herramientas como el paquete svUnit para realizar las pruebas unitarias, pero ¿alguien ha intentado ejecutarlas con Hudson/Jenkins?Integración continua (Hudson/Jenkins) y programación R

+0

+1 También estoy interesado en esto, a fin de detectar automáticamente las actualizaciones de paquetes de CRAN que rompen mis pruebas. Desearía poder enviar fácilmente un montón de pruebas en sentido ascendente para ayudar a los desarrolladores de paquetes, pero las pruebas de automatización funcionarán por el momento. – Iterator

+1

preguntándome si @Iterator o Travis probaron la última svUnit. según yo, svUnit ofrece una "muy buena" integración en Jenkins, por lo que ver a Dirks responder ser "aceptado" me hace pensar que aún no lo has adelantado. – mariotomo

+0

@mariotomo - Gracias por la alerta - Definitivamente lo verificaré. Tengo un próximo proyecto que necesitará usar tales pruebas. – Iterator

Respuesta

12

No veo ningún problema en particular. Estas cosas tienden a ser con guión tan sólo pudiera

  • punto a la parte superior de su repositorio
  • N minutos después de cada registro, un bucle sobre directorios de origen
  • invocan R CMD check en cada
  • su El paquete debe configurarse para usar la prueba unitaria, para lo cual puede usar
    • RUnit que es la unidad de prueba inicial g para R; que es ampliamente utilizado
    • testthat que es un nuevo paquete por el Hadley, y usada por muchos de sus paquetes
    • svUnit por Philippe, que yo sepa nunca se puso de tanto como los otros dos.

que en realidad no es diferente de integración continua con lenguajes compilados. Su pregunta es realmente acerca de cómo hacer pruebas unitarias dentro de R, y esa pregunta ha sido cubierta anteriormente.

+3

lo que escribe es bastante cierto -en general-, la pregunta, sin embargo, menciona explícitamente a Jenkins/Hudson, y que yo sepa, la mejor integración la ofrece [svUnit] (https://r-forge.r-project.org/scm /viewvc.php/pkg/svUnit/R/?root=sciviews). ver mi otra respuesta. ...IMO, el simple hecho de poder ejecutar pruebas de unidades con guiones no es de mucha utilidad si los resultados no están en un formato compatible con la herramienta de integración continua elegida. – mariotomo

+0

¿Alguna sugerencia para lograr que Jenkins muestre una compilación ha fallado si falla la verificación R CMD? –

+1

Claro, mira el nuevo [proyecto de r-travis en github] (https://github.com/craigcitro/r-travis) que tiene una función 'dump_logs'. –

1

Hudson/Jenkins admite ejecutar scripts bash. Creo que puedes usar esto como una entrada a tu mundo R. En R, una forma simple de mantener el resultado es usar sink ("toYourFile.txt") y luego usar la función de visualización de resultados de CI para mostrar toYourFile.txt.

+0

Es fácil hacer que el CI muestre el archivo, ¿cómo lo hace para identificar los errores? –

+0

"cómo identificar errores?", Necesita que el resultado esté en un formato que pueda ser reconocido por Jenkins, y esto es exactamente lo que puede hacer con svUnit, usando el protocolo "junit". – mariotomo

4

en la oficina que hemos estado usando Hudson/Jenkins desde hace bastante tiempo. He contribuido con integration of svUnit to Jenkins, por lo que le recomiendo que use svUnit antes de intentar cualquier otra cosa.

echar un vistazo a las dos bibliotecas que mantener: logging y delftfews o en mí mismo tratando de seguir zoo y redistribute it on github.

no he estado haciendo limpieza recientemente por lo que los tres guiones (en zoo, logging, delftfews) son un poco diferentes. el de mi versión del zoológico se detendrá si falla alguna prueba. esto es práctico cuando está ejecutando R CMD check, pero probablemente sea menos una buena idea al hacer una integración continua.

+0

¿Puedes aclarar cómo hacer que Jenkins falle, o en qué parte del código svUnit se menciona? No pude encontrar ningún texto relevante en la documentación o viñeta del paquete svUnit, y no me resulta claro a partir de las secuencias de comandos que escribió (soy nuevo en CI) lo que provocará que Jenkins pase o falle. ¿Simplemente responde a stderr? –

+0

dices que eres nuevo en CI, te sugiero que leas el manual de Jenkin para entender su estructura, tal vez quieras echarle un vistazo a un servidor Jenkins en funcionamiento? (p. ej .: https://csvjdbc.ci.cloudbees.com/job/csvjdbc/) cualquier cambio comprometido en sus orígenes hará que Jenkins ejecute el guión que registre, y al completar con éxito el guión, usará el informe generado publicar las pruebas siguientes/fallidas/omitidas. – mariotomo

+0

¿Cómo configuró el siguiente/error, basado en el informe? ¿Es eso estándar en Jenkins? – bobK

Cuestiones relacionadas