Aquí podría ser tu PUBLICIDAD


Sistema de integración continua para una base de código Python

votos
48

Estoy empezando a trabajar en un proyecto de hobby con una base de código Python y me gustaría establecer alguna forma de integración continua (es decir, ejecutar una batería de casos de prueba cada vez que se realiza un check-in y enviar mensajes maliciosos a los responsables personas cuando fallan las pruebas) similar a CruiseControl o TeamCity .

Me doy cuenta de que podría hacer esto con ganchos en la mayoría de los VCS , pero eso requiere que las pruebas se ejecuten en la misma máquina que el servidor de control de versiones, que no es tan elegante como me gustaría. ¿Alguien tiene alguna sugerencia para un sistema de integración continua pequeño, fácil de usar y de código abierto adecuado para una base de código Python ?

Publicado el 02/08/2008 a las 19:43
fuente por usuario Matt
En otros idiomas...        العربية       

7 respuestas

votos
26

Una posibilidad es Hudson. Está escrito en Java, pero hay integración con proyectos de Python:

Hudson abraza a Python

Sin embargo, nunca lo intenté yo mismo.

( Actualización , septiembre de 2011: después de una disputa sobre una marca comercial, se ha cambiado el nombre de Hudson a Jenkins ).

Respondida el 02/08/2008 a las 07:56
fuente por usuario Joe Shaw


Aquí podría ser tu PUBLICIDAD


votos
25

Corremos Buildbot - Trac en el trabajo. No lo he usado demasiado, ya que mi código base aún no forma parte del ciclo de publicación. Pero ejecutamos las pruebas en diferentes entornos (OSX / Linux / Win) y envía correos electrónicos, y está escrito en Python.

Respondida el 02/08/2008 a las 08:06
fuente por usuario nlucaroni

votos
17

Usamos Buildbot y Hudson para el desarrollo de Jython. Ambos son útiles, pero tienen diferentes fortalezas y debilidades.

La configuración de Buildbot es puramente Python y bastante simple una vez que lo dominas (mira los documentos API generados por epydoc para obtener la información más reciente). Buildbot hace que sea más fácil definir tareas que no sean de prueba y distribuir los probadores. Sin embargo, realmente no tiene ningún concepto de pruebas individuales, solo textuales, HTML y resultados de resumen, por lo que si desea tener resultados de pruebas navegables de múltiples niveles y demás, tendrá que compilarlo usted mismo o simplemente usar Hudson.

Hudson tiene una excelente ayuda para obtener resultados globales en suites de prueba y pruebas individuales; también es excelente para comparar la salida de prueba entre compilaciones, pero el material distribuido (maestro / esclavo) es comparativamente más complicado porque también se necesita un entorno Java en los esclavos; Además, Hudson es menos tolerante con los enlaces de red escamosa entre el maestro y los esclavos.

Entonces, para obtener los beneficios de ambas herramientas, ejecutamos una sola instancia de Hudson, que detecta las fallas de prueba comunes, luego realizamos una regresión multiplataforma con Buildbot.

Aquí están nuestras instancias:

Respondida el 15/09/2008 a las 01:11
fuente por usuario Nicholas Riley

votos
17

Segundo, la integración Buildbot - Trac. Puede encontrar más información sobre la integración en el sitio web de Buildbot . En mi trabajo anterior, escribimos y utilizamos el complemento que mencionan (tracbb). Lo que hace el complemento es volver a escribir todas las URL de Buildbot para que pueda usar Buildbot desde dentro de Trac. ( http://example.com/tracbb ).

Lo realmente bueno de Buildbot es que la configuración está escrita en Python. Puede integrar su propio código de Python directamente a la configuración. También es muy fácil escribir tus propios BuildSteps para ejecutar tareas específicas.

Utilizamos BuildSteps para obtener la fuente de SVN, extraer las dependencias, publicar los resultados de las pruebas en WebDAV, etcétera.

Escribí una interfaz X10 para poder enviar señales con resultados de compilación. Cuando la compilación falló, encendimos una lámpara de lava roja. Cuando la construcción tuvo éxito, se encendió una lámpara de lava verde. Buenos tiempos :-)

Respondida el 03/08/2008 a las 01:09
fuente por usuario Daan

votos
7

Estamos usando Bitten que está integrado con trac. Y está basado en Python.

Respondida el 16/09/2008 a las 05:51
fuente por usuario Pierre-Jean Coudert

votos
6

TeamCity tiene algo de integración con Python .

Pero TeamCity es:

  • no de código abierto
  • no es pequeño, sino que es rico en funciones
  • es gratis para equipos pequeños y medianos.
Respondida el 22/09/2008 a las 10:18
fuente por usuario yaegor

votos
5

Tengo muy buenas experiencias con Travis-CI para bases de código más pequeños. Las principales ventajas son:

  • configuración se realiza en menos de la mitad de una pantalla de archivo de configuración
  • usted puede hacer su propia instalación o simplemente utilizar la versión alojada libre
  • configuración semiautomática para repositorios de GitHub
  • ningún caso se necesita en el sitio web; iniciar sesión a través de github

Algunas limitaciones:

  • Python no se admite como un lenguaje de primera clase (a partir del momento de la escritura, pero se puede utilizar PIP y apt-get para instalar las dependencias de pitón; ver este tutorial )

  • código tiene que ser alojado en GitHub (al menos cuando se utiliza la versión oficial)

Respondida el 02/02/2012 a las 10:42
fuente por usuario Bernhard Kausler